简单,详细,实现一个MySQL主从复制
记录一个简单实现MySQL的主从复制吧,淦
两个Linux环境安装同版本MYSQL,并且保持两个库的数据一致
注意:不同版本容易出问题处理起来还比较麻烦(如下)
库表不同会出现如下情况
主数据库:8.xxx.x.13
从数据库:47.160.66.164
一、配置主服务器
1、修改mysql配置文件,开启二进制日志并设置 server-id
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=13 #设置server-id,唯一,我用的是ip后两位
2、重启MySQL,登录root账户 创建同步用户
# 创建同步用户
CREATE USER root_sync@47.106.66.164 IDENTIFIED BY 'rootsync@2021';
# 分配权限
GRANT REPLICATION SLAVE ON *.* TO root_sync@47.106.66.164;
# 刷新权限
FLUSH PRIVILEGES;
查看master状态,记录二进制文件名(mysql-bin.000001)和位置(3054)
二、配置从服务器
1、同样修改mysql配置文件,设置 server-id
[mysqld]
server-id=164 #server-id, 唯一
2、重启MYSQL,执行同步SQL语句(需要主服务器主机名、端口、用户名、密码、二进制文件的名称和位置):
如果报错提示 ERROR 3021 (HY000):
ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
先关闭IO线程,再执行同步
STOP SLAVE IO_THREAD; #关闭线程
3、启动slave同步进程,查看其状态
# 启动slave
START SLAVE;
# 查看状态
SHOW SLAVE STATUS\G;
Slave_IO_Running、Slave_SQLRunning均为Yes即成功
三、验证
当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。主数据库建立数据库,删除数据库,插入数据表,备数据库是否即时同步
四、主库开启二进制日志后默认记录所有库所有表的操作,可以指定同步或不同步某些库
# 不同步的数据库
binlog-ignore-db = mysql
# 只同步的数据库
binlog-do-db = bosen-shop
上述方案指定需要同步的库可能会导致数据不一致,可以在从库配置 replicate-wild-do-table、replicate-wild-ignore-table代替
# 不同步的数据库 replicate-wild-ignore-table=mysql.% # 只同步的数据库
replicate-wild-do-table=bosen-shop.%