mysql 主从复制设置

来源:互联网 发布:饥荒数据修改大全 编辑:程序博客网 时间:2024/05/29 08:57

创建账号

master机器上创建复制账号

mysql > CREATE USER ‘cong1’@’192.168.101.147’ IDENTIFIED BY ‘123456’;
mysql > GRANT REPLICATION SLAVE,RELOAD,SUPER ON . TO ‘cong1’@’192.168.101.147’ IDENTIFIED BY ‘123456’;

拷贝数据

(假如是你完全新安装mysql主从服务器,这个一步就不需要。因为新安装的master和slave有相同的数据)
关停Master服务器,将Master中的数据拷贝到B服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!

配置master

接下来对master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值:

server-id=1
log-bin=mysql-bin
binlog-do-db = Test1
server-id:为主服务器A的ID值
log-bin:二进制变更日值

重启master,运行SHOW MASTER STATUS,输出如下:

MariaDB [(none)]> SHOW MASTER STATUS ;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000007 | 892 | | |
+——————+———-+————–+——————+

配置slave

Slave的配置与master类似,你同样需要重启slave的MySQL。如下:

log_bin = mysql-bin
server_id = 2
replicate-do-db=Test1 #复制的数据库
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1

server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

启动slave

接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:

mysql> CHANGE MASTER TO MASTER_HOST=’192.168.101.148’,
MASTER_USER=’cong1’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysql-bin.000008’,
MASTER_LOG_POS=342;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;

在这里主要是看:

Slave_IO_Running=Yes
Slave_SQL_Running=Yes

添加slave

master上添加mysql账号

mysql > GRANT REPLICATION SLAVE,RELOAD,SUPER ON . TO ‘cong2’@’192.168.101.147’ IDENTIFIED BY ‘123456’;

重复步骤4
拷贝主数据库数据文件
重复步骤5

1.已经设置过从库之后重新设置汇报ERROR 1201 (HY000): Could not initialize master info structure .
解决:

先stop slave;
再reset slave;
再CHANGE MASTER TO MASTER_HOST=’192.168.101.148’,
MASTER_USER=’cong1’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysql-bin.000008’,
MASTER_LOG_POS=342;

2.之前进行复制虚拟机的方式进行实验时,汇报serverid重复。