mysql 主备模式搭建过程
MySQL主备搭建
1.主库配置
以下所有操作均在主服务器上执行
1)创建用户并授权
create user slave identified with mysql_native_password by '123456'
mysql>GRANT REPLICATION SLAVE ON *.* to '用户名'@'从数据库IP地址' identified by '密码';
mysql>FLUSH PRIVILEGES;
2)修改主库配置文件
开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效
vim /etc/my.cnf
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=/var/lib/mysql/binlog
#master端的id号,不唯一即可
server-id=1
#指定同步的数据库,如果不写,默认是同步所有数据库
binlog-do-db = 数据库
#指定不同步的数据库
binlog-ignore-db=mysql
#binlog日志的保留时间
expire_logs_days=7
#指定binlog日志的格式
binlog_format=ROW
改配置文件后,重启服务:
service mysqld restart
./mysql.server start
3)查看主服务器当前二进制日志名和偏移量
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 | 1304 | 数据库(空为所有) | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
到此主服务器已经配置好:
2.从库配置
以下所有操作均在从服务器上执行
1)修改从库配置文件
vim /etc/my.cnf
#master端的id号,不唯一即可
server-id=99
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=mysql-bin
#复制哪个库可以不用填写
replicate-do-db=webkit
replicate-do-db=dgp
replicate-do-db=dses_etldb
replicate-do-db=dses_metadb
replicate-do-db=dcf
replicate-do-db=etl
replicate-do-db=metadata
#不复制哪个库
replicate-ignore-db=mysql,information_schema,performance_schema
#这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止,保证数据写入的一致性
master_info_repository=table
relay_log_info_repository=table
改配置文件后,重启服务:
service mysqld restart
2)sql中执行
mysql> CHANGE MASTER TO MASTER_HOST='主库的ip',
MASTER_PORT=3306,
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog.000005',
MASTER_LOG_POS=1240;
注:MASTER_LOG_FILE和MASTER_LOG_POS的值为master节点中执行show master status查询到的信息
2)启动slave进程
mysql> start slave;
Query OK, 0 rows affected (0.04 sec)
3)查看slave状态
mysql> show slave status\G;(后面的分号不去的会报错,但无影响)
如果下面两项值为YES,则表示配置正确:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:1、主从的server_id 一定不能重复;
2、主从的uuid 不能重复;SELECT UUID()/show variables like '%uuid';
如果重复可以在/opt/module/mysql8/datas/mysql/atuo.cnf 删除或者修改重启服务;
二、GTID配置主从
1.主库
my.ini配置
[mysqld]
port=3306
gtid_mode=on
enforce_gtid_consistency=on
log_bin=binlog
server-id=80
binlog_format=row
重启服务;
建立账号
create user slave identified with mysql_native_password by '123456';
grant repliciation slave on *.* to slave
flush privilrges;
查看主库信息
从库my,ini 配置
port=3306
gtid_mode=on
enforce_gtid_consistency=on
log_bin=binlog
server-id=81
log_slave_updates=1
重启服务
匹配主库
change master to master_host='192.168.10.102',master_user='slave',master_password='123456',master_port=3306, master_auto_position=1;
mysql> start slave;
mysql> show slave status\G;
略...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)