MySQL主从库快速搭建
MySQL主从数据库配置
今天给我FastAPI的新项目做读写分离,记录一下mysql的配置过程
具体原理请参考https://blog.csdn.net/qq_40378034/article/details/91125768
我这个项目逻辑是,优先级高的写和读操作使用主库,后台管理和优先级没那么高的操作用从库读。
首先你需要准备两个相同配置的mysql服务器,在主数据库下选定你想要做主从复制的库,自己用服务器搭或者用阿里云和腾讯云的第三方好像都可以
下面开始配置
master
-
创建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你的密码
连接上了表示成功了
-
修改配置文件,Linux一般在 /etc/my.cnf
[mysqld] server-id = 1 #唯一id log-bin=mysql-bin #其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件 binlog-do-db = test #记录日志的数据库 binlog-ignore-db = mysql #不记录日志的数据库
保存并退出
-
重启mysql,再进mysql看看
[root@主数据库 ~]# service mysqld restart .. mysql> show master status;
这里可以看到刚刚设置要做主从复制的数据库,生成的日志文件,头两个参数一会要在从数据库上用到
到这里,如果有表,可以先锁表防止数据不同步,完事再解开
slave
-
修改my.cnf配置
[mysqld] server-id = 2 # 与主数据库不一样的整数即可 log-bin=mysql-bin replicate-do-db = test replicate-ignore-db = mysql,information_schema,performance_schema
-
重启mysql服务
-
用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; # 后面两个是主数据库的两个参数
-
重启slave
mysql>stop slave; mysql>reset slave; mysql>start slave;
-
查看从库状态
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