MySQL快速搭建主从复制
一、基于位点的主从复制部署流程
- 确定主库Binlog是否开启
- 修改主从server_id
- 主库导出数据
- 从库导入数据
- 确定主库备份时的位点
- 在从库配置主库信息
- 查看复制状态并测试数据是否同步
二、准备阶段(主库和从库配置都需要修改)
1、确定主库Binlog是否开启
2、修改主从server_id(建议修改成IP的后两段)
select @@global.server_id;
set global server_id = 5435;
修改my.cnf配置文件
server-id = 5435
3、关闭GTID
修改my.cnf配置文件
gtid_mode=off
# enforce_gtid_consistency=on
三、基于位点的主从复制
1、创建用户(主库)
create user 'ccj2'@'%'identified by 'ccj';
GRANT ALL PRIVILEGES ON *.* TO 'ccj2'@'从库IP地址';
2、主库导出数据
mysqldump -u'ccj' -p'ccj1' --single-transaction --all-databases --master-data=2 --set-gtid-purged=off >/data/backup/alldb_bak.sqlscp /data/backup/alldb_bak.sql 101.201.246.223:/data/backup
3、从库导入数据
mysql -uroot -pccj </data/backup/alldb_bak.sql
二、基于位点的主从复制部署
1、在从库配置主库信息
查看备份文件中的位点信息
head -n 30 /data/backup/alldb_bak.sql
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000038', MASTER_LOG_POS=726;
查看从服务器(Slave)复制状态
show slave status
配置从服务器(Slave)以连接到主服务器(Master)
change master to
master_host='121.41.54.35',
master_user='ccj2',
master_password='密码',
master_log_file='mysql-bin.000038',
master_log_pos=726;
启动从服务器(Slave)的复制线程
start slave;
2、查看复制状态
show slave status;
1. 主从连接信息
这些参数描述了从服务器如何连接到主服务器。
参数 | 作用 |
---|---|
Master_Host | 主服务器的主机名或 IP 地址。 |
Master_User | 用于复制的主服务器用户名。 |
Master_Port | 主服务器的 MySQL 端口号(默认为 3306)。 |
Master_SSL_Allowed | 是否允许使用 SSL 连接到主服务器。 |
Master_SSL_CA_File | SSL 证书颁发机构文件路径(如果使用 SSL)。 |
Master_SSL_CA_Path | SSL 证书颁发机构路径(如果使用 SSL)。 |
Master_SSL_Cert | 从服务器的 SSL 证书文件路径(如果使用 SSL)。 |
Master_SSL_Cipher | 使用的 SSL 加密套件。 |
Master_SSL_Key | 从服务器的 SSL 私钥文件路径(如果使用 SSL)。 |
Master_SSL_Verify_Server_Cert | 是否验证主服务器的 SSL 证书。 |
2. 复制线程状态
这些参数描述了从服务器的 I/O 线程和 SQL 线程的运行状态。
参数 | 作用 |
---|---|
Slave_IO_Running | I/O 线程是否运行。值为 Yes 表示正常运行,No 表示线程停止或出错。 |
Slave_SQL_Running | SQL 线程是否运行。值为 Yes 表示正常运行,No 表示线程停止或出错。 |
Last_IO_Error | I/O 线程的最后一条错误信息。 |
Last_SQL_Error | SQL 线程的最后一条错误信息。 |
Last_IO_Errno | I/O 线程的最后一条错误代码。 |
Last_SQL_Errno | SQL 线程的最后一条错误代码。 |
3. 主服务器日志信息
这些参数描述了从服务器正在复制的主服务器二进制日志文件和位置。
参数 | 作用 |
---|---|
Master_Log_File | 当前正在复制的主服务器二进制日志文件名。 |
Read_Master_Log_Pos | 当前正在复制的主服务器二进制日志文件的位置。 |
Relay_Master_Log_File | 中继日志中记录的主服务器二进制日志文件名。 |
Exec_Master_Log_Pos | 从服务器已执行的主服务器二进制日志的位置。 |
4. 从服务器中继日志信息
这些参数描述了从服务器的中继日志状态。
参数 | 作用 |
---|---|
Relay_Log_File | 当前正在使用的中继日志文件名。 |
Relay_Log_Pos | 当前中继日志的位置。 |
Relay_Log_Space | 中继日志占用的总空间大小(以字节为单位)。 |
Relay_Log_Purge | 是否允许自动清理中继日志。 |
Relay_Log_Space_Limit | 中继日志的最大空间限制(如果设置了 --relay-log-space-limit 参数)。 |
5. 复制延迟和性能
这些参数描述了从服务器与主服务器之间的同步延迟。
参数 | 作用 |
---|---|
Seconds_Behind_Master | 从服务器滞后主服务器的秒数。值为 0 表示同步,值越大表示延迟越高。 |
SQL_Delay | SQL 线程延迟的时间(单位:秒),用于控制从服务器的复制速度。 |
SQL_Remaining_Delay | SQL 线程剩余的延迟时间(单位:秒)。 |
6. 其他信息
这些参数提供了一些额外的复制状态信息。
参数 | 作用 |
---|---|
Slave_Running | 从服务器是否正在运行复制。值为 Yes 或 No 。 |
Skip_Counter | 跳过的事件计数器(用于跳过某些错误)。 |
Slave_SQL_Running_State | SQL 线程的当前状态描述(例如,正在执行哪个事件)。 |
Replicate_Do_DB | 配置的复制数据库白名单(如果设置了 replicate-do-db 参数)。 |
Replicate_Ignore_DB | 配置的复制数据库黑名单(如果设置了 replicate-ignore-db 参数)。 |
Replicate_Do_Table | 配置的复制表白名单(如果设置了 replicate-do-table 参数)。 |
Replicate_Ignore_Table | 配置的复制表黑名单(如果设置了 replicate-ignore-table 参数)。 |
7. 诊断和调试
这些参数用于诊断复制问题。
参数 | 作用 |
---|---|
Auto_Position | 是否启用基于 GTID 的自动定位复制。值为 1 表示启用,0 表示未启用。 |
Gtid_Mode | 是否启用了 GTID 复制模式。 |
Executed_Gtid_Set | 已执行的 GTID 集合(如果启用了 GTID 复制)。 |
Retrieved_Gtid_Set | 已检索的 GTID 集合(如果启用了 GTID 复制)。 |
Replicate_Ignore_Server_Ids | 配置的忽略的服务器 ID 列表(用于避免循环复制)。 |