实现mysql的ab复制(a-b-b,a-b-c)

实验环境准备:

三台虚拟机,IP分别为master: 192.168.2.1   slave:192.168.2.2   slave1:192.168.2.3

将192.168.2.1的主机做为mysql的主,另外两台做为辅(也可说是从)


第一步:配置好yum  ,执行yum install mysql mysql-server -y安装mysql(三台都要装)

第二步:master上编辑mysql的配置文件

1#vim /etc/my.cnf   增加如下几行保存退出

server_id = 1
log-bin=binlog
log-bin-index=binlog.index

第三步:编辑slave上的mysql配置文件

2#vim /etc/my.cnf  增加如下几行保存退出

server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index

第四步:重启master、slave上的mysqld服务

service mysqld restart

第五步:在master上为slave添加一个用户

mysql> GRANT replication slave ON *.* TO 'zx'@'%' identified by '123';

mysql> flush privileges;

第六步:在slave上

2#cd /var/lib/mysql
2#rm -fr *
2#service mysqld restart

第七步:在master上备份mysql数据并拷贝到slave上

1#mysqldump -A -x > /tmp/full.sql

1#scp /tmp/full.sql [email protected]:/tmp

第八步:在slave上还原数据

mysql < /tmp/full.sql

第九步:查看master数据库的运行状态

master:
mysql> flush tables with read lock;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000003 |      295 |              |                  |

mysql>unlock tables;

第十步:在slave上执行一下命令(注意:master_host指到master的IP,master_user是master中为slave创建的用户,master_log_file是第九步查询出来的File名,master_log_pos是第九步查询出来的Position值)

mysql> change master to master_host='192.168.2.1, master_port=3306, master_user='zx', master_password='123', master_log_file='binlog.000003',master_log_pos=295;
mysql> start slave;

查看slave的运行状态:show slave status \G;

如果下面两个值为YES配置完成

 Slave_IO_Running: Yes  (主机之间的连通性)
 Slave_SQL_Running: Yes(SQL运行状态)

以上完成了ab复制!

如果再填一台主机slave1,做成a-b-b结构,又该怎么做?

其实很简单:安装slave同样的步骤配置slave1,有一个地方需要修改,就是server_id改成3即可!

如果要做成a-b-c结构呢?b是c的主,a是b的主!

其实这个也不难:

1、在slave这台机器的mysql配置文件中添加如下两行

log-bin=binlog

log-slave-updates(开启slave日志更新功能)

2、在slave的mysql数据库中为slave1创建用户

mysql> GRANT replication slave ON *.* TO 'zx1'@'%' identified by '123';

mysql> flush privileges;

3、slave1中配置文件增加为

server_id = 3
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index


4、下面操作和主从复制一样!

slave1:

3#cd /var/lib/myslq

3#rm -fr *

3#service mysqld restart

slave:

3#mysqldump -A -x > /tmp/full.sql(备份slave所有数据)

3#scp /tmp/full.sql [email protected]:/tmp(将数据拷贝在slave1)

mysql> flush tables with read lock;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000002 |      169 |              |                  |

slave1:

mysql < /tmp/full.sql(还原数据)

mysql> change master to master_host='192.168.2.2, master_port=3306, master_user='zx1', master_password='123', master_log_file='binlog.000002',master_log_pos=169;
mysql> start slave;

查看slave的运行状态:show slave status \G;

如果下面两个值为YES配置完成

 Slave_IO_Running: Yes  (主机之间的连通性)
 Slave_SQL_Running: Yes(SQL运行状态)

这里已经完成了a-b-c复制!


mysql>unlock tables;


交流群:374506612

你可能感兴趣的:(mysql,AB复制)