1、如何配置MYSQL的主从复制?html
1. 两台数据库服务器,IP分别为 192.168.216.128 和 192.168.216.129,在服务器上装MYSQL(个人配置版本为5.5.56)mysql
2. 打开 192.168.216.128 服务器上的MYSQL的配置文件 /etc/my.cnf (路径根据本身服务器的状况来看),将其中的 server-id 设为1(默认为1,总之两台服务器要设置为不一样的ID),而后重启MYSQL服务sql
3. 打开 192.168.216.129 服务器上的MYSQL的配置文件 /etc/my.cnf (路径根据本身服务器的状况来看),将其中的 server-id 设为2(默认为1),而后重启MYSQL服务数据库
4. 设 192.168.216.128 为主服务器,那么在主服务器上加一个从服务器能够登陆的用户,语句以下:服务器
GRANT REPLICATION SLAVE ON *.* TO 'sally'@'192.168.216.129' IDENTIFIED BY 'ilovesally';
FLUSH PRIVILEGES
建好后,在192.168.216.129 服务器上执行如下语句测试
mysql -h 192.168.216.128 -usally -pilovesally
而后试一下可不能够连上,若是能够,则正确,若是连不上,看一下什么缘由,是不是防火墙的缘由,若是是则去配置防火墙的规则。spa
5. 以上完成后在主服务器上执行如下语句,查询master的状态.net
show master status;
能够看到以上结果,这儿只须要看 File 和 Position,其它的两个分别是白名单和黑名单,意思为同步哪几个数据库和不一样步哪几个数据库,可自行根据需求进行设置。记录了前两个字段后,在从库上执行如下语句:3d
CHANGE MASTER TO MASTER_HOST='192.168.216.128', MASTER_USER='sally', MASTER_PASSWORD='ilovesally', MASTER_LOG_FILE='mysql-bin.000020', MASTER_LOG_POS=1441;
6. 执行完毕后,在从库上继续执行以下语句:code
slave start;
show slave status\G;
这样,查看从服务器的状态,若是状态中的用红线标出来两个参数的值都为YES,那证实配置已经成功,不然能够检查一下具体问题出如今什么地方。
这样,就算配置完成了。在主库中新建数据库,新建一张表,插几条数据,到从库上查询一下看是否已经同步过来。
若是失败,能够从如下几个方面去排查问题:
1.首先试一下主从服务器相互之间是否 PING 得通
2.试一下远程链接是否正确,若是连不上,则有多是网卡不一致、防火墙没有放行 3306 端口
3.server-id 是否配成一致
4.bin-log 的信息是否正确
2、如何配置MYSQL的主主复制?
上面说了主从复制的配置方法,如今接着上面的配置继续,而后实现双主复制,让以上的两个服务器互为主从。
1. 在主服务器上配置 /etc/my.cnf 文件,配置以下:
auto_increment_increment=2 #步进值auto_imcrement。通常有n台主MySQL就填n auto_increment_offset=1 #起始值。通常填第n台主MySQL。此时为第一台主MySQL binlog-ignore=mysql #忽略mysql库【我通常都不写】 binlog-ignore=information_schema #忽略information_schema库【我通常都不写】
配置以后重启MYSQL服务
2.在从服务器上配置 /etc/my.cnf 文件,配置以下
auto_increment_increment=2 #步进值auto_imcrement。通常有n台主MySQL就填n auto_increment_offset=2 #起始值。通常填第n台主MySQL。此时为第二台主MySQL binlog-ignore=mysql #忽略mysql库【我通常都不写】 binlog-ignore=information_schema #忽略information_schema库【我通常都不写】
配置以后重启MYSQL服务
3. 在从服务器上添加一个主服务器能够访问的用户,命令以下:
GRANT REPLICATION SLAVE ON *.* TO 'sally1'@'192.168.216.128' IDENTIFIED BY 'ilovesally'; FLUSH PRIVILEGES
建好后,在192.168.216.128 服务器上执行如下语句
mysql -h 192.168.216.129 -usally1 -pilovesally
若是能够连上,则进行下一步,连不上的话,参考上面进行问题排查。
4. 由于要互为主从,因此如今从服务器也是master ,因此也要查看一下状态
show master status;
查到相应的信息后,在原来的主服务器上执行如下命令(由于如今它如今也是另外一台的从服务器)
CHANGE MASTER TO MASTER_HOST='192.168.216.129', MASTER_USER='sally1', MASTER_PASSWORD='ilovesally', MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=1457;
5. 执行完毕后,在原主库上继续执行以下语句:
start slave;
show slave status\G;
同上,若是出现以下画面,则证实配置成功。
6. 在两台服务器的MYSQL中分别进行一些建库、建表、插入、更新等操做,看一下另外一台会不会进行同步,若是能够则证实主主配置成功,不然仍是上面的排错方法,进行错误排查。
3、如何配置MYSQL的双主多从?
如今已是双主配置了,可是若是要进行读写分离,那么咱们要再增长N台从库,如何作呢?很是简单,按以下操做便可:
1. 新增长一台数据库服务器,192.168.216.130,数据库配置均与前两台相同
2. 肯定一下要将哪一台看成本身的主服务器,咱们姑且设 192.168.216.128 为主服务器
3. 在第三台服务器中编辑 /etc/my.cnf ,将其 server-id 设为 3(保证与前两个不同便可),而后重启MYSQL服务
4. 在主服务器中,增长一条用户记录,用于当前服务器对主库对的链接,代码以下:
GRANT REPLICATION SLAVE ON *.* TO 'farrow'@'192.168.216.130' IDENTIFIED BY 'ilovesally'; FLUSH PRIVILEGES;
5. 在 192.168.216.130 服务器上测试是否能够链接到主库
mysql -h 192.168.216.130 -ufarrow -pilovesally
若是能够连上,则能够进行下一步,不然根据上面的提示排查问题。
6. 在 192.168.216.130 服务器上查询 master 当前状态
看到相关信息后,咱们执行以下操做:
CHANGE MASTER TO MASTER_HOST='192.168.216.128', MASTER_USER='sally', MASTER_PASSWORD='ilovesally', MASTER_LOG_FILE='mysql-bin.000020', MASTER_LOG_POS=1441;
7. 执行完毕后,咱们查询一下当前服务器的状态
start slave;
show slave status;
若是状态以下,则说明配置正确
若是此处有问题,参考上面所提排查并解决问题。
8. 此时咱们在 192.168.216.128 上建库、建表、插入、更新、删除数据,在 另外两台上分别进行查看,发现均已经同步。可是若是咱们在 192.168.216.129 上作相应的操做,则发现只有 192.168.216.128 上进行了相应的同步,而 192.168.216.130 上的数据并未同步。这是为何呢?由于咱们设置的主库是 192.168.216.128,因此在 192.168.216.129 进行数据操做的时候并未同步,这显然不符合咱们的需求,那么,咱们要怎么修改呢?很是简单,在互为主从的两台服务器的配置文件中均加入如下语句:
log-slave-updates=on
加上后将两台服务器的MYSQL重启,而后再进行测试,发现数据已经能够同步了。若是要再多加一些从服务器,和以上相似,如今咱们作的是双主一从,咱们能够再加N台从服务器,配置也是同样的。
至此,MYSQL主从复制、主主复制、双主多从配置咱们均已经搞定!