简单,详细,实现一个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.%

  

 

posted @ 2021-07-05 18:34  林诺欧巴  阅读(109)  评论(0编辑  收藏  举报