经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
mysql 多主
来源:cnblogs  作者:it_man_xiangge  时间:2019/3/29 9:09:27  对本文有异议

原理:多个msyql/mariadb之间可以实时同步,任意节点的操作可以立即同步到其他节点,底层采用galera插件同步,类似rsync,上层mysql相对于galera是透明的,可以实现多节点同时读写(无法实现读写分离)。

NOTE:普通的msyql/mariadb无法集成galera,要想使用galera必须编译msyql/mariadb让其拥有调用galera 的能力,或者可以直接下载支持galera的mysql/mariadb。

环境:

1.采用三节点

   节点一:192.168.85.136

   节点二:192.168.85.137

   节点三:192.168.85.138

2.系统平台:

Red Hat Enterprise Linux Server release 6.7 (Santiago)

3.关闭防火墙(所有节点执行)

/etc/rc.d/init.d/iptables stop

setenforce 0

4.设置galera.repo

http://releases.galeracluster.com//mysql-wsrep-5.5/redhat/6/x86_64/      #mysql-server软件包
http://releases.galeracluster.com//galera-3/redhat/6/x86_64/                   #galera组件

将上面地址加入yum repo

5.查看libgalera_smm.so路径(mysql 会调用此模块像其他节点同步数据)

rpm -ql galera-3-25.3.25-2.el6.x86_64 | grep smm.so

 /usr/lib64/galera-3/libgalera_smm.so

6.配置my.cnf

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. wsrep_node_name=node1
  5. wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
  6. wsrep_sst_method=rsync
  7. port=3306
  8. user=mysql
  9. default_storage_engine=InnoDB
  10. innodb_autoinc_lock_mode=2
  11. innodb_locks_unsafe_for_binlog=1
  12. innodb_flush_log_at_trx_commit=0
  13. innodb_doublewrite=0
  14. innodb_file_per_table=1
  15. binlog_format=ROW
  16. log-bin=mysql-bin
  17. server-id=101
  18. relay-log=mysql-relay-bin
  19. log-slave-updates=1
  20. symbolic-links=0
  21. [mysqld_safe]
  22. log-error=/var/log/mysqld.log
  23. pid-file=/var/run/mysqld/mysqld.pid

三个节点全部同步此配置文件,需注意:

  1. wsrep_node_name=node1 #配置成节点node名称
  1. wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so #就是刚才我们查出的模块路径


    7.启动mysql:
    node1:service mysql start --wsrep_cluster_address=gcomm://
    node2:
    service mysql start --wsrep_cluster_address=gcomm://192.168.85.136
    node3:service mysql start --wsrep_cluster_address=gcomm://192.168.85.137

    8.验证:
    node1上创建数据库:

 

  1.  

在其余node查看:

  1. node2:

node3:

  1. 接下来可以将集群信息写入到my.cnf
    在每个节点中my.cnf 文件mysqld段中加入:
    wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138"

    ################################################################################
    排错:
      启动mysql出现without updating PID file (/var/lib/mysql/node1.pid):
    解决:
      注释my.cnf
    wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138"
    启动第一个node:
      /etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://
    启动第二个node:
    /etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://192.168.85.136
    启动第三个node:
      /etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://192.168.85.136
    全部启动完成后将
    wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138" 加入到每个节点中

    NOTE:导致上述问题的原因未知,也未去深入研究,只要三个节点不同时启动就不会有问题,如果三个节点同时启动就会出现上述问题(重启三节点任意一个节点不会出现任何问题)。
  1.  

原文链接:http://www.cnblogs.com/dufeixiang/p/10616895.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号