MySQL主从复制原理及其配置过程
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,一、MySQL复制原理。二、MySQL复制配置。一、MySQL复制原理1.MySQL复制原理图复制原理:Slave启动IO Thread和SQL ThreadMaster启动DumpThread1.S
千家信息网最后更新 2025年11月08日MySQL主从复制原理及其配置过程
一、MySQL复制原理。
二、MySQL复制配置。
一、MySQL复制原理
1.MySQL复制原理图

复制原理:
Slave启动IO Thread和SQL Thread
Master启动DumpThread
1.Slave通过IO Thread向Master的Dump Thread发送请求,Master的Dump Thread请求本地的binlog。
2.Master读取本地的binlog,并将读取内容发送给Slave的IO Thread线程。
3.Slave的IO Thread将收到的内容,写入到本地的relaylog中。
4.Slave的SQL Thread读取本地的relaylog文件内容。
5.Slave的SQL Thread将读取的内容写入到本地数据库。
二、MySQL复制配置
1.MySQL复制图

2.配置Master
2.1.修改Master配置文件
vim /etc/my.cnf[mysqld]#开启二进制日志文件log-bin = mysql-bin#配置唯一server idserver-id = 1#事务安全sync_master_info = 1sync_binlog = 1 innodb_support_xa = ON
2.2.Master配置文件全文
[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16Mthread_concurrency = 8log-bin=mysql-binbinlog_format=mixedserver-id = 1sync_master_info = 1sync_binlog = 1 innodb_support_xa = ONdatadir = /data/mysql/3306/datainnodb_data_home_dir = /data/mysql/3306/datainnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /data/mysql/3306/datainnodb_buffer_pool_size = 256Minnodb_additional_mem_pool_size = 20Minnodb_log_file_size = 64Minnodb_log_buffer_size = 8Minnodb_flush_log_at_trx_commit = 2innodb_lock_wait_timeout = 50innodb_file_per_table = ONskip_name_resolve = ON[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 128Msort_buffer_size = 128Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout
2.3.创建复制权限的用户
MariaDB [(none)]> grant replication slave,replication client on *.* to 'repl'@'192.168.1.5' identified by 'slavepass';Query OK, 0 rows affected (0.39 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.06 sec)
3.配置Slave
3.1.修改Slave配置文件
vim /etc/my.cnf[mysqld]#设置唯一IDserver-id = 3 #启用relay logrelay_log= relay-logrelay_log_index=relay-log.index#事务安全skip_slave_start = ONsync_relay_log = 1sync_relay_log_info = 1
3.3.slave配置文件全文
[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16Mthread_concurrency = 8server-id = 3relay_log= relay-logrelay_log_index=relay-log.indexskip_slave_start = ONsync_relay_log = 1sync_relay_log_info = 1innodb_data_home_dir = /data/mysql/3306/datainnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /data/mysql/3306/datainnodb_buffer_pool_size = 256Minnodb_additional_mem_pool_size = 20Minnodb_log_file_size = 64Minnodb_log_buffer_size = 8Minnodb_flush_log_at_trx_commit = 2innodb_lock_wait_timeout = 50innodb_file_per_table = ONskip_name_resolve = ON[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 128Msort_buffer_size = 128Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout
4.开始复制
4.1.在Master上查看binlog Pos点
MariaDB [(none)]> show master status\G*************************** 1. row *************************** File: mysql-bin.000008 Position: 652 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec)
4.2.在slave上执行同步操作
MariaDB [(none)]> change master to master_host='192.168.1.4',master_user='repl',master_password='slavepass',master_log_file='mysql-bin.000008',master_log_pos=652;Query OK, 0 rows affected (0.93 sec)
4.3.在slave上启动slave
MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.02 sec)
4.3.在slave上查看slave状态
MariaDB [(none)]> show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.4 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000008 Read_Master_Log_Pos: 652 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 537 Relay_Master_Log_File: mysql-bin.000008 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 652 Relay_Log_Space: 829 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: conservative1 row in set (0.00 sec)
5.测试同步
5.1.在master创建数据
MariaDB [(none)]> create database ckldb;Query OK, 1 row affected (0.37 sec)MariaDB [(none)]> use ckldb;Database changedMariaDB [ckldb]> create table jone(id int,name varchar(30));Query OK, 0 rows affected (0.29 sec)MariaDB [ckldb]> insert into jone values(1,'wukaka'); Query OK, 1 row affected (0.49 sec)MariaDB [ckldb]> delete from jone;Query OK, 1 row affected (0.09 sec)MariaDB [ckldb]> insert into jone values(1,'wukaka'),(2,'side'); Query OK, 2 rows affected (0.06 sec)Records: 2 Duplicates: 0 Warnings: 0MariaDB [ckldb]> select * from jone;+------+--------+| id | name |+------+--------+| 1 | wukaka || 2 | side |+------+--------+2 rows in set (0.00 sec)
5.2.在slave上查看
MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| ckldb || information_schema || mysql || performance_schema || test |+--------------------+5 rows in set (0.34 sec)MariaDB [(none)]> use ckldb;Database changedMariaDB [ckldb]> show tables;+-----------------+| Tables_in_ckldb |+-----------------+| jone |+-----------------+1 row in set (0.00 sec)MariaDB [ckldb]> select * from jone;+------+--------+| id | name |+------+--------+| 1 | wukaka || 2 | side |+------+--------+2 rows in set (0.00 sec)
注意,如果主库已经运行很久,同步之前最好,备份主库,记录binlog Pos点。将备份导入到slave库
,然后从binlog Pos开始恢复。
配置
文件
原理
内容
同步
安全
事务
全文
备份
数据
二进制
数据库
日志
最好
权限
状态
用户
线程
并将
测试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库查询耗时
数据库中关系运算
深圳同在互联网科技有限公司
软件运行提示数据库错误
淘宝商城服务器密码是什么
软件开发商的安全责任
通许天气预报软件开发
网络安全技术教育课件
科蓝软件数据库市场占有率
计算机网络技术综合题第二题
智能软件开发代码
公共安全与网络安全
mfc获取数据库数据
怎么备份sde数据库
服务器可以弄多大内存
职业哥被队友踢出服务器
鸿蒙数据库系统
大数据分析服务器
什么是科技网络安全
电信的网络技术
信息安全包括网络安全专业吗
服务器的端口怎么开启
云 边 域 大数据库
安徽广播电视局网络安全专家
页面上的数据与数据库同步
浪潮服务器安装系统重装蓝屏
设置网页和数据库映射
杭州人工智能软件开发大概多少钱
用服务器挖矿效果怎样
电信的网络技术