配置数据库主从复制
步骤
- 主服务器的配置
1. 在第一个服务器上,编辑mysql配置文件
// 编辑mysql配置文件
vi /etc/my.cnf
// 在[mysqld]下面加上:
// log-bin代表开启主从复制,server-id代表主从服务器的唯一标识
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
2. 查看主服务器的配置
// 重启mysql
service mysqld restart
// 登录mysql
mysql -u root -p
// 查看主服务的配置
show master status;
需要记住 File 列和 Position 列的数据,将来配置从服务器需要使用
- 从服务器的配置
1. 在第二个服务器上,编辑mysql配置文件
// 编辑mysql配置文件
vi /etc/my.cnf
// 在[mysqld]下面加上:
server-id=2
2. 登录mysql
// 登录mysql
mysql -u root -p
// 执行
use mysql;
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;
source /usr/share/mysql/mysql_system_tables.sql;
3. 重启mysql,重新登录,配置从节点
// 重启mysql
service mysqld restart
// 重新登录mysql
mysql -u root -p
// 执行,注意 master_host、master_port、master_password、master_log_file、master_log_pos要根据自己的数据库来配置
change master to master_host='192.168.242.110',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=120
// 开启从节点
start slave;
// 查询结果
show slave status\G
//Slave_IO_Running和Slave_SQL_Running都为YES才表示同步成功。
4. 测试
在主服务器上创建一个db1数据库,查看从服务器上是否自动同步
注意: 当出现Slave_IO_Running:No问题时, 可能是mysql的UUID重复了, 造成这种情况一般是克隆服务器造成的
解决办法
https://blog.csdn.net/mingknow/article/details/98061196
Slave_IO_Running:No问题解决方法
- 检查发现他们的auto.cnf中的server-uuid是否相同
[[email protected] ~]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=4f37a731-9b79-11e8-8013-000c29f0700f
- 停止从库的mysqld服务,删除他的auto.cnf文件,再启动数据库服务即可
[[email protected] mysql]# systemctl stop mysqld.service
[[email protected] mysql]# mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
[[email protected] mysql]# systemctl start mysqld.service
- 此时再去查看从库auto.cnf,已自动生成新的server-uuid:
[[email protected] mysql]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=2682888d-994a-11e8-aaf0-000c298cdafc
- 然后问题解决 _