MySQL主从库快速搭建

MySQL主从数据库配置

今天给我FastAPI的新项目做读写分离,记录一下mysql的配置过程

具体原理请参考https://blog.csdn.net/qq_40378034/article/details/91125768

我这个项目逻辑是,优先级高的写和读操作使用主库,后台管理和优先级没那么高的操作用从库读。

首先你需要准备两个相同配置的mysql服务器,在主数据库下选定你想要做主从复制的库,自己用服务器搭或者用阿里云和腾讯云的第三方好像都可以

下面开始配置

master

  1. 创建salve用户

    mysql> grant replication slave on *.* to 'slave账户名'@'xx.xx.xx.xxx' identified by 'slave账户密码';
    mysql> flush privileges;
    

    创建好后,可以在从数据库访问,看设置是否成功

    [root@从数据库 ~]# mysql -hxx.xx.xx.xxx -uslave -p你的密码
    

    连接上了表示成功了

  2. 修改配置文件,Linux一般在 /etc/my.cnf

    [mysqld]
    server-id = 1        #唯一id
    log-bin=mysql-bin          #其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
    binlog-do-db = test     #记录日志的数据库
    binlog-ignore-db = mysql   #不记录日志的数据库
    

    保存并退出

  3. 重启mysql,再进mysql看看

    [root@主数据库 ~]# service mysqld restart
    ..
    mysql> show master status; 
    

    这里可以看到刚刚设置要做主从复制的数据库,生成的日志文件,头两个参数一会要在从数据库上用到

    到这里,如果有表,可以先锁表防止数据不同步,完事再解开

slave

  1. 修改my.cnf配置

    [mysqld]
    server-id = 2 # 与主数据库不一样的整数即可
    log-bin=mysql-bin
    replicate-do-db = test
    replicate-ignore-db = mysql,information_schema,performance_schema
    
  2. 重启mysql服务

  3. 用change mster 语句指定同步位置

    mysql>stop slave;  # 必须先停止slave线程,否则会设置不成功
    mysql>change master to
    >master_host='主数据库地址',master_user='slave账号',master_password='密码',
    > master_log_file=' mysql-bin.000001 ',master_log_pos=2562;
    # 后面两个是主数据库的两个参数
    
  4. 重启slave

    mysql>stop slave;
    mysql>reset slave;
    mysql>start slave;
    
  5. 查看从库状态

    show slave status\G
    

    参数很多,只要框起来这两行是Yes就表示成功了

现在尝试在主库中新建表或插入数据,测试是否正常

问题解决

如果玩着玩着发现Slave_SQL_Running变成No了,可以这样解决

stop slave; 

set global sql_slave_skip_counter =1;

start slave; 
# 之后再用mysql> show slave status\G
posted @ 2020-08-20 21:19  黑猫警长紧张  阅读(292)  评论(0编辑  收藏  举报