前言
搭建的教程网上有很多但是具体遇到的问题需要自己躺坑
前期准备
mysql的在Ubuntu上的搭建可以参考我上一篇搭建教程Ubuntu16下MySQL5.7安装
配置master服务器的mysql
配置
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
//在[mysqld]模块下添加以下代码
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = ys_db // 需要同步的数据库
binlog_ignore_db = mysql // 不需要同步的数据库
重启mysql服务
service mysql restart
查看logbin是否开启
进入myql
show variables like'log%';
查看master状态
show master status;
则能看到对应的file,position信息,这些信息在slave服务器会用到
配置slave
配置mysqld.cnf文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = ys_db // 与master服务器数据库一致
重启slave
service mysql restart
配置slave的与master通信
- 进入slave的mysql;
stop slave;
- 修改指定master的地址
change master to master_host=’masterIP地址’,master_user=’ys’,master_password=’111111′,master_log_file=”mysql-bin.log.00005″,master_log_pos=154;
master_log_file
和master_log_pos
则是在master
下show master status
看到的file position
信息。
重启slave与查看状态
start slave;
show slave status\G;
在出现信息中找到Slave_IO_Running/Slave_SQL_Running
,都为yes则成功了
注意
在这里搭建的时候遇到slave_IO_running为false;查看slave的status看到提示master和slave的UUID相同
怎么解决了?
这里需要修改auto.cnf
配置文件的,文件路径可能不一样
查看文件 find / -name auto.cnf
编辑server-uuid=f4863bcf-1d28-11e4-8657-000c29eec7bf
随便改动一两个值即可以,或者按照上面的格式重新写一个
测试
在master的user表插入
insert into user(name,age) value("xxxxx",23);
在slave能够看到 同步了同样的数据。
结语
至此一个简单的mysql主从搭建结束(里面的坑后续会不定期补上),祝大家周末愉快~~
欢迎加入 QQ群 456835629 交流技术