前提条件
1.主从服务器操作系统版本和位数一致;
2.Master 和 Slave 数据库的版本要一致;
3.Master 和 Slave 数据库中的数据要一致;
4.Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;
主服务器配置
1、修改 my.cnf 配置文件
vi /etc/my.cnf
增加如下配置
#主服务器配置
log-bin = mysql-bin
binlog_format = mixed #这里不只可以配置成mixd,还有其他的,具体使用情况根据自己的实际情况配置
server-id = 1
binlog-do-db = 同步的数据库名
2、重启服务
service msyqld restart
3、创建一个用于让从数据库连接的用户(也可以用现有的用户密码)
mysql> CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
mysql> GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';
4、刷新授权表信息
mysql> flush privileges;
5、进入数据库
获取主节点当前binary log文件名和位置(position)
mysql> SHOW MASTER STATUS;
记住这个 File 和 Position ,配置从服务器连接主服务器要用
从数据库配置
1、修改 my.cnf 配置文件
vi /etc/my.cnf
增加如下配置
#从数据库配置(这个配置必须与住服务器一致)
log-bin = mysql-bin
binlog_format = mixed
server-id = 2
#如果主从库名相同,用这个
#replicate-do-db = 数据库名
#如果主从库名不同
#replicate-rewrite-db = 主数据库名 -> 从数据库名
#如果同步部分库表
#replicate-wild-do-table = 数据库名.表1
#replicate-wild-do-table = 数据库名.表2
#忽略某表
#Replicate_Wild_Ignore_Table = 数据库名.表1
2、重启服务器
service mysql restart
3、进入数据库
配置连接主服务器
mysql> change master to
master_host='主库ip',
master_user='用户名',
master_password='密码',
master_port=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=156;
mysql> flush privileges;
4、开启主从同步
mysql> start slave;
关闭主从同步 (若要重新设置连接,必须要先停掉stop slave)
mysql> stop slave;
取消主从复制
mysql> reset slave all;
5、查看主从同步状态
mysql> show slave status\G;
Slave_IO_Running和Slave_SQL_Running的状态都为YES表示同步成功