MySQL主从复制原理及其配置过程
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,一、MySQL复制原理。二、MySQL复制配置。一、MySQL复制原理1.MySQL复制原理图复制原理:Slave启动IO Thread和SQL ThreadMaster启动DumpThread1.S
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
西安一码通 网络安全防护
无线网络技术参考教材
完整的软件开发工作
东华大学数据库实验报告
二层菜单 数据库表设计
软件开发和造价师
苹果手机id账号被锁服务器异常
崂山民宿软件开发
机器人软件开发与维护
sql数据库连接池
互联网科技基金怎么样
公安部网络安全保卫局钟忠
网络安全软件推荐
什么原因导致服务器cpu占满
云服务器的安全性高吗
大陆集团汽车软件开发
小米测试开发和软件开发笔试
qq邮箱上面服务器是什么东西
网络安全证书如何申请
下载描述文件服务器出错
服务器自动上传监控文件
嵌入式软件开发 pdf
网络安全工作总结报告 银行
测试设备软件开发程序
软件开发过程 软件描述
网络安全渗透测试的类型
围绕网络安全周
浙江工业软件开发零售价格
计算机网络技术笔记本电脑游戏
数据库与知识发现