MySql服务AB复制的实现AB/ABB/ABC

1.修改MySql的MASTER服务器配置文件,在[mysqld]字段中加入以下内容
#vim /etc/my.cnf
#[mysqld]
#设置mysql服务器的serverID
server_id = 10
#启用mysql服务的binlog功能
log-bin=binlog
log-bin-index=binlog.index
#重启mysql服务
/etc/init.d/mysqld restart
2.配置MySql的Slave服务器的配置文件,在[mysqld]字段中加入下面内容
server_id = 20
#设置MySql服务器接收到的binlog日志文件的存放位置
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
#重启mysql服务
/etc/init.d/mysqld restart
3.为AB同步建立同步用户
#连接Mysql(Master)服务器
#mysql -h MasterServerIP -u username -p
#建立用户用于Slave服务器连接Master服务器
mysql> GRANT replication slave ON *.* TO 'ABusername'@'%' identified by 'passwd';
#刷新使新增用户立即生效
mysql> flush privileges;
4.第一次同步数据(全备份)
#在Master服务器执行下面命令
#锁表,保证备份时数据不被修改
mysql> flush tables with read lock;
mysql> exit
#在Slave服务器上执行下面代码
#首先清空Slave服务器中MySql服务的所有数据库和表
rm -rf /var/lib/mysql/*
/etc/init.d/mysql restart
#同步数据
scp -r  root@MasterServerIP: /var/lib/mysql/* /var/lib/mysql/
chown -R mysql.mysql /var/lib/mysql/
#连接mysql(Master)数据库,查看当前binlog记录写入的文件和位置,如下
mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000003 |      762 |              |                  | 
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
#解锁mysql数据库
unlock tables;
5.配置Mysql服务的Slave服务器
#连接到MySql(Slave)服务器
#mysql -h SlaveServerIP -u username -p
#配置AB同步所使用的用户名/密码,Master主机IP,端口以及最后一次同步(全备份)时binlog记录的文件名及开始位置等。
mysql> change master to master_host='MasterServerIP', master_port=3306, master_user='ABusername', master_password='passwd', master_log_file='binlog.000003',master_log_pos=762;
#开始AB复制
mysql> start slave;
#查看AB负责状态
mysql> show slave status \G
#确保下面内容为yes
Slave_IO_Running: Yes      //主机之间的连通性
Slave_SQL_Running: Yes   //SQL运行状态
6.在MySql服务器(Master)中修改表中的内容,测试AB复制是否成功。
这样MySql服务的AB复制就完成了!
 
#==================================================
如果还有另一台主机slave1,需要实现a-b-b结构,又该怎么实现?
    其实很简单:使用与配置slave主机时相同的方法配置slave1,只需要在配置server_id改成30(只需要比slave更大)即可!如果考虑到业务的高可用问题,第一次同步数据的时候,只需要使用slave的MySql文件同步数据(全备份)即可。binlog记录的开始文件和binlog开始位置需要在第一次slave和slave1复制数据的时候,可以从slave主机的/var/lib/mysql/master.info文件中得到,第一次AB复制以及以后的数据同步,Slave1都将从Master获取数据。
#===================================================
 
#===================================================
如果需要实现a-b-c结构呢?a是b的Master,b从a同步数据;b是c的Master,c从b同步数据!
实现的方法也很简单
1.使用a-b结构中Master的配置步骤配置A主机。
2.配置B主机
#在B这台机器的mysql配置文件的[mysqld]字段中添加如下内容
#vim /etc/my.conf
server_id = 20
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
log-bin=binlog
log-slave-updates     //开启slave日志更新功能
3.在slave的mysql数据库中为C创建用户
mysql> GRANT replication slave ON *.* TO 'BCusername'@'%' identified by 'passwd';
mysql> flush privileges;
4.在C中配置文件的[mysqld]字段中增加下面内容
server_id = 30
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index=/var/lib/mysql/mysql-relay-bin.index
5.之后B和C的其他配置,就和a-b结构中Slave主机的其他配置一样了,只需要执行 4.第一次同步数据(全备份)” 之后的步骤就可以了 。不过,应该在B完成第一次AB复制,AB中数据一样之后,在配置BC间的AB同步。

 

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