MySQL主从配置

要点
1. 配置MySQL时尽量做到版本一致、主库的版本不能低于从库

2. 主库中的server_id不能需高于从库、主库需开启logbin日志功能

3. 需在主库中创建用户、并给该用户授权权限,使从库能使用该用户同步到主库的数据

4. 建立主从前需保证主从库的数据都是一致的,从库才能持续同步主库的数据,可用mysqldump在主库中导出数据迁移到从库上。

 

实验环境:

本次主从库版本为mysql-5.7.37,操作系统为Centos 7 64位

 主库IP地址:192.168.100.110

 从库IP地址:192.168.100.111

 

配置流程:

1. Master上需做的配置

mysql> use mysql    #选择mysql数据库

mysql> GRANT REPLICATION SLAVE ON *.* to 'ky150'@'192.168.100.111' identified by 'ky150ky150';    #创建授权用户给从库登录、用于同步主库数据

mysql> FLUSH PRIVILEGES;    #生效该操作

mysql> system cat /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data/
port = 3306
server_id = 128              #主库中该id值需高于从库
socket = /tmp/mysql.sock       
log-bin = /usr/local/mysql/data/binlog      #必须开启此功能,否则没办法做主从配置。Tips: 若没有此项,需在/etc/my.cnf配置文件中加入 log-bin = /usr/local/mysql/data/binlog
mysql> show master status;         #File和Position项需记录起来
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 2356 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

 

建立主从前,需保证两个数据库数据都是一致的,用mysqldump工具将主库的数据导出来,再将其导入到从库上!

执行如下操作,生产环境中需先停掉应用服务,以防导出来的数据与从库不一致,导致主从关系无法建立。

[root@db-master ~]# mysqldump -uroot -p -A > all_data.sql       #参数A表示导出所有库的数据

 

再使用scp工具将主库的数据传输给从库服务器上的root目录下

[root@db-master ~]# scp all_data.sql root@192.168.100.111:/root/
root@192.168.100.111's password:
all_data.sql 100% 856KB 35.9MB/s 00:00

 

 2.Slave上需做的配置

[root@db_slave ~]# cat /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data/
port = 3306
server_id = 256           #id不能大于主库上的id
socket = /tmp/mysql.sock
log-bin=mysql-bin        #需开启此功能

 

指定主库IP地址及同步专用的账号密码信息等!需和主库配置的保持一致
mysql> change master to master_host="192.168.100.110",
-> master_user="ky150",
-> master_password="ky150ky150",
-> master_log_file="binlog.000004",    #需和主库保持一致
-> master_log_pos=2356;         #需和主库保持一致

mysql> source /root/all_data.sql      #建立主从关系前需先手动同步一次主库的数据

mysql> start slave;

 

mysql> show slave status\G        #Slave中的IO和SQL项需为Yes才是正常状态
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

测试阶段:

在主库中新建库与插入表数据并在从库中查看是否能进行同步

如下图所示,可以看到在主库中新增数据,从库都能同步到,本次主从配置完成。

 

 

可能会遇到的问题
当配置完后发现从库还是无法同步到主库中的数据时,可检查以下几点:

1. 建立主从关系前,主从库数据是否一致

2. 主库中建立的账号密码,从库是否都填写无误

3. 主从库之间能否正常访问(ping、telnet),以及安全策略是否有放行(iptables、firewalld、selinux)

4. 主库中产生的二进制文件名及Position节点号(show master status;),从库是否配置一致

 

posted @ 2022-09-30 11:38  Ky150  阅读(19)  评论(0)    收藏  举报