在配置前需要两个装有ssh的可以互通的两个linux系统,笔者这里使用的是虚拟机下的两个linux系统——乌班图16.04,简单的构建一个两个节点的主主复制的mysql集群。
1.先在1号主节点上来修改1号的配置
sudo vi /etc/mysql/mysql/mysql.conf.d/mysqld.cnf(这里看自己系统mysql配置文件在哪里,我的配置情况是mysql5.7在乌班图16.04的配置过程)找到[mysqld.cnf],在这里增加如下配置,我是在40行后开始配置的。
1号主节点——
server-id = 101(设置id)
log-bin = mysql1-bin(开启日志并命名)
relay-log = mysql1-relay(开启中继日志并命名)
skip-name-resolve = 0
auto_increment_increment = 2(防止主键冲突设置自增)
auto_increment_offset = 1(每次增加一)
修改后保存退出重启服务,在乌班图16.04下的的命令是这样,按照你的linux系统重启服务。 sudo service mysql restart(重启服务后配置文件才能生效)
2.然后在2号主节点上来修改2号的配置
sudo vi /etc/mysql/mysql/mysql.conf.d/mysqld.cnf(这里看自己电脑的mysql配置文件在哪里,我的配置情况是mysql5.7在乌班图16.04的配置过程)
找到[mysqld],在这里增加如下配置,我是在40行后开始配置的。这里的操作步骤同1类似.
2号主节点——
server-id=102(设置id,不能和1号节点名冲突)
log-bin =mysql2-bin(开启日志并命名,不能冲突)
relay-log=mysql2-relay(开启中继日志并命名,不能冲突)
skip-name-resolve = 0
auto_increment_increment = 2(防止主键冲突设置自增)
auto_increment_offset = 2(每次增加2)
修改后保存退出重启服务,在乌班图16.04下的的命令是这样,按照你的linux系统重启服务。 sudo service mysql restart(重启服务后配置文件才能生效)
3.在两个节点上都进入mysql开始下面步骤的配置
-
命令mysql -u root -p后进入mysql。
-
show slave status\G查看之前是否建立过主从连接,如果有的话,就先对两个节点(1)reset master (2)reset slave(如果没办法reset slave的话可以先stop slave后在reset slave)
-
.在1号节点建立授权用户给2号节点使用grant replication slave ,replication client on . to ‘repl’@’%’ identified by ‘repl’;
-
在一号节点上show master status\G,查看file和position.笔者的File:mysql1-bin.000001, Position:154
-
然后去2号节点上去设置值
change master to master_host='172.110.23.110',(这里的ip是一号节点的ip地址,如果不知道的话可以去ifconfig操作在系统中查看) master_port=3306,(这里是mysql数据库的端口号,一般默认是3306.如果你没有改动过可以就是3306) master_user='repl',(账号) master_password='repl',(密码) master_log_file='mysql1-bin.000001',(刚才查看的file) master_log_pos=154;(刚才查看的Position)
-
在2号节点上show master status \G,查看file和position.笔者的File:mysql2-bin.000001 Position:154
-
然后去1号节点上去设置值
-
change master to master_host='172.110.23.139',(这里的ip是一号节点的ip地址,如果不知道的话可以去ifconfig操作在系统中查看) master_port=3306,(这里是mysql数据库的端口号,一般默认是3306.如果你没有改动过可以就是3306) master_user='repl',(账号) master_password='repl',(密码) master_log_file='mysql2-bin.000001',(刚才查看的file) master_log_pos=154;(刚才查看的Position)
-
在2号节点建立授权用户给1号节点使用grant replication slave,replication client on . to ‘repl’@’%’ identified by ‘repl’;
-
在1号和2号节点上都执行start slave;然后都show slave status \G查看是否 连接成功,连接成功的标志就是两边节点的Slave_IO_State都显示的是 Slave_IO_State:Waiting for master to send event。
这样的话正常情况下就建立好了主主复制结构。
【郑重申明】:由于本文是笔者在学习阶段所写技术能力有限,仅供参考。如果那里有不对或者有问题,可以联系笔者修改。或者想和我讨论一起学习的,我们可以一起探讨。如果产生问题没有连接成功, 可以耐心查看报错,慢慢调整修改,有可能粗心导致步骤错误。