千家信息网

MySQL主从复制原理及其配置过程

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、MySQL复制原理。二、MySQL复制配置。一、MySQL复制原理1.MySQL复制原理图复制原理:Slave启动IO Thread和SQL ThreadMaster启动DumpThread1.S
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 华服互联网科技怎么样 互联网科技工作委员会 互联网科技公司华为 菲比寻常互联网科技 融贸通互联网科技 衡水科技产业互联网平台 互联网和高科技公司 昭通云南众福互联网科技有限公司 常德市电业局互联网科技部 重庆威客帮互联网科技 厦门千工互联网科技有限公司 爱医互联网络科技 烟台灵鸽互联网科技有限公司 神州科技互联网有限公司 全球科技与互联网公司市值变化 国产互联网科技公司 互联网金融运营模式中的金融科技 黑龙江互联网科技公司 上海旺乐尼互联网科技有限公司 百单网互联网科技有限公司怎么样 互联网金融公司科技 合肥互联网科技公司 互联网 视角下的科技创新 北京大学互联网科技怎么样 互联网科技热点资讯 知域互联网科技有限公司大骗子 宜昌元轩互联网科技有限公司 互联网数据科技专业 兰石爱特工业互联网科技分公司
0