MySQL AB复制
-
简介
MySQL的AB复制也叫主从复制,是主服务器(master)单向的向从属服务器(slave)复制,它属于异步复制。 -
AB复制的机理
首先我们先明确一点,在MySQL数据库里添加或者删除等改变了数据的时候。MySQL会在它的 /data 文件夹下会生成一个 mysql_bin.xxxxxx 的文件,这里面面保存的数据是告诉你数据库更新了什么操作。
所以slave通过 mysql_mysql 和 mysql_IO 进程来监控 master的改变,并将master最新改变的mysql_bin.xxxxxx文件复制到slave之下,从而达到复制。 -
实现步骤
前提:slave主机上的mysql版本必须比master主机上的版本要高,至少要相同。
确保实验用的mysql中的一个库数据要相同。rhel 6.5
master : 172.25.254.34
slave : 172.25.254.381)master 端的/etc/my.cnf文件的修改,二进制同步数据库名
binlog_do_bd=test #二进制需要同步的数据库名
binlog_ignore_db=mysql #禁止mysql库的同步,避免一些不必要的问题
server_id=1 #mysql #mysql的server_id 必须是1~32的正整数
bin_log=mysql_bin #启动二进制文件系统2)master 下/etc/my.cnf文件的修改二进制同步的数据库名。
mysql> grant all on *.* to test@172.25.254.38 identified by 'westos';
mysql> flush privileges;
3)slave端 /etc/.mycnf文件的修改,对master主机信息的确认以及授权用户的定义。
server_id =2
master_host=172.25.254.34
master_user=test
master_password=westos
master_port=3306
master_connect_retry=60 #断点重新连接时间
replicate_ignore_db=mysql
replicate_do_db=test
4 )master 查看Binlog_DO_DB的同步数据库的file,以及最新修改内容的mysql_bin.xxxxxx文件和position号。mysql> show master status;
5)slave端输入同步主机信息、同步用户的用户名及密码、master的mysql_bin.xxxxxx文件和position号。
mysql> change master to master_host='172.25.254.34',master_user='test',
master_password=‘westos’,master_log_file=‘mysql_bin.xxxxxx’,master_log_pos=‘xx’;
mysql>slave start;
```
最后`mysql>show slave status\G;`
查看到
slave_IO_Running:Yes
slave_SQL_Running:Yes
说明从库的I/O,slave_SQL线程都正确开启,说明数据库同步了。