数据库主从复制搭建
Start slave stop slave reset slave
搭建环境:game7:3306,3307
l datadir:/usr/local/mysql/data/3306/ /usr/local/mysql/data/3307/
l my.cnf:/usr/local/mysql/data/3306/my.cnf /usr/local/mysql/data/3307/myc.nf
这次搭建的环境都是新建立的,所以不用考虑数据拷贝复制这个环节
主库------my3306
从库------my3307
实验步骤:
主库上的操作:
1)在my3306上建立一个复制用户:
my3306>grant replication slave,replication client on *.* to repl@'localhost' identified by'123456';
2)在my3306的my.cnf中添加如下内容:
3)通过mysqladmin -P3306 shutdown关闭my3306服务,然后重启服务
4)查看上面的设置是否生效:
从库上的操作:
1)在my3307的my.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上执行
4)查看my3307的状态
5)在my3307上start slave,再查看my3307的状态
此时,slave上的两个线程就已经启动了
在主库my3306上查看:
在从库my3307上查看
测试:
在主库my3306上的test数据库添加一个zheng:
我们在从库my3307上查看test数据库
至此,我们的主从搭建就成功了。
注意:在新建用户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通行。这样之前的问题也就解决了。