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;),从库是否配置一致

浙公网安备 33010602011771号