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;
略...

posted @ 2022-09-06 17:12  donghongchao  阅读(3160)  评论(0编辑  收藏  举报