数据库主从复制搭建

Start slave stop slave reset slave

搭建环境:game73306,3307

datadir:/usr/local/mysql/data/3306/   /usr/local/mysql/data/3307/

my.cnf/usr/local/mysql/data/3306/my.cnf  /usr/local/mysql/data/3307/myc.nf

这次搭建的环境都是新建立的,所以不用考虑数据拷贝复制这个环节

MySQL主从复制_主从 

主库------my3306

从库------my3307

实验步骤:

主库上的操作:

1)在my3306上建立一个复制用户:

my3306>grant replication slave,replication client on *.* to repl@'localhost' identified by'123456';   

2)my3306my.cnf中添加如下内容:

      MySQL主从复制_数据库_02

3)通过mysqladmin -P3306 shutdown关闭my3306服务,然后重启服务

4)查看上面的设置是否生效:

            MySQL主从复制_数据库_03

            MySQL主从复制_数据库_04

从库上的操作:

1)my3307my.cnf中添加如下内容:

server-id = 131202

binlog_format=mixed

log-slave-updates

log-bin = /usr/local/mysql/log/3307/mysql-bin

relay_log = /usr/local/mysql/log/3307/relay-bin

read-only

2)关闭my3307服务,重启my3307服务

mysqladmin  --port=3307 shutdown

mysqld_multi start 3307

3)在my3307上执行

MySQL主从复制_复制_05

4)查看my3307的状态

MySQL主从复制_数据库_06

5)my3307start slave,再查看my3307的状态

MySQL主从复制_复制_07

此时,slave上的两个线程就已经启动了

在主库my3306上查看:

MySQL主从复制_数据库_08

在从库my3307上查看

MySQL主从复制_主从_09

 

测试:

在主库my3306上的test数据库添加一个zheng:

MySQL主从复制_数据库_10

我们在从库my3307上查看test数据库

MySQL主从复制_数据库_11

至此,我们的主从搭建就成功了。

注意:在新建用户repl@localhost。然后再从库my3307应用slave时,通过:

 change master to master_host='localhost', master_user='repl', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=0; 

结果在启动从库的时候会发现:

 Last_IO_Error: error connecting to master 'repl@localhost:3306' - retry-time: 60  retries: 86400

这个错误。原因可能是通信方式有问题,找不到socket文件去通信。然后换成以下方法就可以了:

在主库my3306上,新建一个用户repl@10.16.131.201

然后再从库上应用:change master to master_host='10.16.131.201', master_user='repl', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=0; 

这样主从之间的通信方式就换成了tcp/ip通行。这样之前的问题也就解决了。