mysql-6-主从复制搭建

1 总结

1:主从复制最大缺陷就是延迟

2: 设置完主从关系之后,主机创建的库和表,,同步到从机。

3:设置完主从关系之前,主机创建的库和表,不会,同步到从机。

4:要是主机一开始就有一个test库,从机没有,这时候,我删除主机的test库,从库复制会报错。后续的复制将会停止。( slave-skip-errors=all 解决)

2 搭建前的准备

2.1复制的基本原则

  1.  每个slave只有一个master
  2. 每个slave只能有一个唯一的服务器ID
  3. 每个master可以有多个slave
  4. mysql版本尽量一致,防止出问题。
  5. 两台服务能ping通
  6. MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

1 编辑主库的配置文件

vim /etc/my.cnf

2 主库配置

    [mysqld]
    #开启日志 
    log-bin = mysql-bin
    #binlog级别 (statement:只记操作命令,有可能导致主从数据不一致,row:数据一致 mixed:)
    binlog_format=row
    #设置服务id,主从不能一致  ,一般设置为ip最后一段
    server-id = 19 
   

   #设置需要同步的数据库   
    binlog-do-db=aa_db 
    #屏蔽系统库同步 
    binlog-ignore-db=mysql 
    binlog-ignore-db=bb_db 

3 重启

systemctl restart mysqld

4、登录主库:

mysql -uroot -p

5 创建用户

降低密码强度(不建议使用)

SELECT @@VALIDATE_PASSWORD_POLICY;
set global validate_password_policy = 0;
set global validate_password_length=1;

6  授权主从复制专用账号(给从库复制数据使用的)

GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync'; 

7  刷新权限

flush privileges;

8 查看主库信息,注意:记录一下file和Position,从库配置时用

show master status;

 

从库配置

    
[mysqld]
    #设置3306端口
    port = 3306 
    # 允许最大连接数
    max_connections=1000

    
    #开启日志 
    log-bin = mysql-bin 
    #设置服务id,主从不能一样 ,一般设置为ip最后一段
    server-id = 18 
    #复制异常处理方式 (不配置这个,报错将停止复制数据,重要)
    slave-skip-errors=all
    #设置需要同步的数据库 (一般不用)
    replicate_wild_do_table=test_db.% 
    
    #屏蔽系统自带的库的同步 (重要)
    replicate_wild_ignore_table=mysql.% 
    replicate_wild_ignore_table=information_schema.% 
    replicate_wild_ignore_table=performance_schema.% 

从库登录

 mysql -u root -p

根据主库信息,执行

CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_PORT=3306,MASTER_USER='db_sync', MASTER_PASSWORD='db_sync',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;

4、启动服务

# 开启
mysql> start slave;
# 停止
mysql> stop slave;
# 重启
mysql> reset slave;

5、确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为 Yes,
请检查error_log,然后排查相关异常。

mysql>show slave status;

提示: flush table with read lock; unlock tables;

验证:

 1:主库新建用户并授权,从库也能登录。

 2:建立关系后所有新建的表和库都会同步,但是没建立关系之前主库就创建的东西不会同步

3 问题

3.1 主从复制报错

 在设置主从关系之前,我的主机mysql上,有一个test库。当我设置了主从关系后,这个test库也不会复制到我的从机的mysql里。但是之后,主机所有创建的库和表都会同步。

单是当我删除主机的test库的时候,由于从机没有test库就会报错。复制将会停止。

解决1 从机配置(还可以具体到哪个码)

slave-skip-errors=all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值