【精】Linux上面Mysql主从复制配置

Mysql主从复制

Linux下面安装主从复制

参考: https://blog.csdn.net/wangxy_job/article/details/106313553

数据库读写分离架构

读写分离架构
在这里插入图片描述

数据库主从复制原理

在这里插入图片描述

主从复制主要是从服务器监控主服务器的binlog,发现有add/update/delete等进行自我更新

  • 主服务器开启binlog
    记录增删改操作
  • 从监控主binlog日志变化
    更新自己的数据

主从配置

1.创建两个mysql数据库服务,启动两个Mysql服务

购买两份百度云服务器
host1 : 106.12.57.160(主)
host2 : 106.12.11.171(从)

分别安装mysql服务

2.主从服务器基本配置

(1)主服务器配置

    [mysqld]
    #设置服务id,主从不能一样
    server-id=1
    #开启binlog日志
    log-bin=/opt/logs/mysql/binlogs/mysql-bin
    #记录日志模式
    binlog_format=mixed
    #设置binlog过期清理时间
    expire_logs_days=7
    #设置不需要同步的数据库
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-ignore-db=performance_schema
    #设置需要同步的数据库
    binlog-do-db=web_book

(2)从服务器配置

    [mysqld]
    #设置服务id
    server-id=2
    #开启binlog日志
    log-bin=/opt/logs/mysql/binlogs/mysql-bin
    #记录日志模式
    binlog_format=mixed
    #设置不需要同步的数据库
    replicate_wild_ignore_table=mysql.%
    replicate_wild_ignore_table=information_schema.%
    replicate_wild_ignore_table=performance_schema.%
    #设置需要同步的数据库    
    replicate_wild_do_table=web_book.%

3.自定义binlog添加权限

#如果自定义binlog目录需要指定权限
chown -R mysql:mysql /opt/logs/mysql/binlogs

#重启mysql
systemctl restart mysqld          

4.查询验证

#查询是否配置成功
show master status;

#查询server_id
show variables like '%server_id%';

#查询日志记录使用的模式
show global variables like "%binlog_format%";

5.创建主从复制账号

#登录主库
mysql -uroot -p

#创建主从复制专用账号
grant replication slave on *.* to 'db_sync'@'%' identified by 'db_sync_123';            

#刷新权限
flush privileges;

6.主从数据同步配置

切换到从库

#先停止同步
stop slave;

#修改从库指向主库,使用主库记录的binlog日志名mysql-bin.000001
change master to
master_host='106.12.57.160',
master_user='db_sync',
master_password='db_sync_123',
master_log_file='mysql-bin.000001',
master_log_pos=592

#启动同步
start slave;

7.查看主从库状态

#查询主库状态(切换主库)
show master status;
#查询从库状态(切换从库)
show slave status\G;

主库状态:

从库状态:

在这里插入图片描述

注意:当Slave_IO_Running和Slave_SQL_Running都为Yes说明同步成功

FAQ

1.重启mysql报错?
执行:systemctl restart mysqld.service

报错:mysqld: File '/opt/logs/mysql-bin.index' not found (Errcode: 13 - Permission denied)

问题解析:

由于yum安装权限属于mysql用户

解决:chown -R mysql:mysql /opt/logs/mysql-bin
2.Check that you do not already have another mysqld process using the same Inn
原因:存在多个运行的mysql进程

解决:ps -ef|grep mysql
     kill -9 pid
3.Could not open unix socket lock file /var/lib/mysql/mysql.sock.lock.
原因:/var/lib/mysql存在锁文件

解决:cd /var/lib/mysql
     rm -f mysql.sock.lock 
4.Your password does not satisfy the current policy requirements.
原因:设置主从复制账号的时候密码太弱

解决:修改密码强弱规定
     set global validate_password_policy=LOW;         
     set global validate_password_length=11;
5.如果之前已经有从库指向主库的,需要先清除
stop slave io_thread for channel '';
reset slave all;         
6.从库同步失败:Slave_SQL_Running:No
方法一、跳过错误行
    stop slave ;
    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    start slave ;

方法二、手动同步数据

    先把数据手动同步

    #进入master
    
    show master status;
    记录下position = [newPosition]
    
    #进入slave
    stop slave;
    change master to...master_log_pos=[newPosition]
    start slave;
7.从库同步失败?
#replicate-ignore-db = test
#replicate-do-db = abc
以上方式会出现问题,建议使用replicate_wild_*来设置同步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花生糖葫芦侠

创作不易,请多多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值