找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 983|回复: 1

MySQL 8.x主从复制实战

[复制链接]

22

主题

21

回帖

164

积分

管理员

积分
164
发表于 2024-8-20 16:46:53 | 显示全部楼层 |阅读模式
MYSQL8.x主从复制环境构建至少需2台服务器,可以配置1主多从,多主多从,如下为1主1从,MYSQL主从复制架构实战步骤:

(1)系统环境准备
  1. Master:192.168.101.128
  2. Slave: 192.168.101.129
复制代码

(2)Master安装及配置
在MYSQL Master端安装MySQL-8.x软件服务,在/etc/my.cnf 配置文件[mysqld]段中加入如下代码设置server-id和bin-log文件名称,然后重启MYSQL服务即可。添加如下代码:
  1. server-id = 1
  2. log-bin = mysql-bin
复制代码

(3)Master端/etc/my.cnf完整配置代码如下:
  1. [client]
  2. port                = 3306
  3. socket        = /tmp/mysql.sock
  4. [mysqld]
  5. port                = 3306
  6. socket        = /tmp/mysql.sock
  7. skip-external-locking
  8. key_buffer_size = 256M
  9. max_allowed_packet = 1M
  10. table_open_cache = 256
  11. sort_buffer_size = 1M
  12. read_buffer_size = 1M
  13. read_rnd_buffer_size = 4M
  14. myisam_sort_buffer_size = 64M
  15. thread_cache_size = 8
  16. query_cache_size= 16M
  17. thread_concurrency = 8
  18. log-bin=mysql-bin
  19. binlog_format=mixed
  20. server-id        = 1
  21. [mysqldump]
  22. quick
  23. max_allowed_packet = 16M
  24. [mysql]
  25. no-auto-rehash
  26. [myisamchk]
  27. key_buffer_size = 128M
  28. sort_buffer_size = 128M
  29. read_buffer = 2M
  30. write_buffer = 2M
  31. [mysqlhotcopy]
  32. interactive-timeout
复制代码

(4)在Master数据库上创建tongbu用户及密码并设置权限,执行如下命令,查看bin-log文件及position点,如图11-13所示:

  1. #创建tongbu用户;
  2. CREATE USER 'tongbu'@'%' IDENTIFIED WITH mysql_native_password BY 'aaaAAA111.';
  3. #授权同步权限;
  4. GRANT REPLICATION SLAVE ON *.* TO 'tongbu'@'%';
  5. #查看master状态;
  6. show  master  status;
复制代码

图11-13 MYSQL Master授权用户
(5)Slave安装及配置
Slave端安装MySQL-8.x软件服务,在/etc/my.cnf 配置文件[mysqld]段中加入如下代码,然后重启MYSQL服务即可。如果在安装时cp my-large.cnf  /etc/my.cnf,则需修改server-id,MASTER与Slave端server-id不能一样,Slave端也无需开启bin-log功能:
  1. server-id = 2
复制代码

(6)Slave端/etc/my.cnf完整配置代码如下:
  1. [client]
  2. port                = 3306
  3. socket        = /tmp/mysql.sock
  4. [mysqld]
  5. port                = 3306
  6. socket        = /tmp/mysql.sock
  7. skip-external-locking
  8. key_buffer_size = 256M
  9. max_allowed_packet = 1M
  10. table_open_cache = 256
  11. sort_buffer_size = 1M
  12. read_buffer_size = 1M
  13. read_rnd_buffer_size = 4M
  14. myisam_sort_buffer_size = 64M
  15. thread_cache_size = 8
  16. query_cache_size= 16M
  17. thread_concurrency = 8
  18. server-id        = 2
  19. [mysqldump]
  20. quick
  21. max_allowed_packet = 16M
  22. [mysql]
  23. no-auto-rehash
  24. [myisamchk]
  25. key_buffer_size = 128M
  26. sort_buffer_size = 128M
  27. read_buffer = 2M
  28. write_buffer = 2M
  29. [mysqlhotcopy]
  30. interactive-timeout
复制代码

(7)Slave指定Master IP、用户名、密码、bin-log文件名(mysql-bin.000028)及position(257),代码如下:
  1. change master to
  2. master_host='192.168.101.128',master_user='tongbu',master_password='aaaAAA111.',master_log_file='mysql-bin.000028',master_log_pos=257;
复制代码

(8)在slave启动slave start,并执行show slave status\G查看Mysql主从状态:
  1. slave  start;
  2. show  slave  status\G
复制代码

(9)查看Slave端IO线程、SQL线程状态均为YES,代表Slave已正常连接Master实现同步:
  1. Slave_IO_Running: Yes
  2. Slave_SQL_Running: Yes
复制代码


(10)执行Show slave status\G,常见参数含义解析:
  1. Slave_IO_State                                         I/O线程连接Master状态;
  2. Master_User                                                 用于连接Master的用户;
  3. Master_Port                                                 Master端监听端口;
  4. Connect_Retry                                         主从连接失败,重试时间间隔;
  5. Master_Log_File                                        I/O线程读取的Master二进制日志文件的名称。
  6. Read_Master_Log_Pos                             I/O线程已读取的Master二进制日志文件的位置;
  7. Relay_Log_File                                        SQL线程读取和执行的中继日志文件的名称。
  8. Relay_Log_Pos                                        SQL线程已读取和执行的中继日志文件的位置;
  9. Relay_Master_Log_File                         SQL线程执行的Master二进制日志文件的名称;
  10. Slave_IO_Running                                    I/O线程是否被启动并成功地连接到主服务器上;
  11. Slave_SQL_Running                                SQL线程是否被启动;
  12. Replicate_Do_DB                                        指定的同步的数据库列表;
  13. Skip_Counter                                            SQL_SLAVE_SKIP_COUNTER设置的值;
  14. Seconds_Behind_Master                            Slave端SQL线程和I/O线程之间的时间差距,单位为秒,常被用于主从延迟检查方法之一。
复制代码

(11)在Master端创建mysql_db_test数据库和t0表,如图11-14所示,命令如下:
  1. create database mysql_ab_test charset=utf8;
  2. show databases;
  3. use mysql_ab_test;
  4. create table t0 (id varchar(20),name varchar(20));
  5. show tables;
复制代码

图11-14 MYSQL master创建数据库和表

(12)Slave服务器查看是否有mysql_ab_test数据库和t0的表,如果存在则代表Slave从Master复制数据成功,证明MYSQL主从配置至此已经配置成功,如图11-15所示:


图11-15 MYSQL Slave自动同步数据

(13)在Master服务器的t0表插入两条数据,在slave查看是否已同步,master上执行如下图11-16所示:
  1. insert into t0 values (“001”,”wugk1”);
  2. insert into t0 values (“002”,”wugk2”);
  3. select * from t0;
复制代码

图11-16 MYSQL Master insert数据
(14)Slave端执行查询命令,如图11-17所示,表示在Master插入的数据已经同步到Slave端:
图11-17 MYSQL Slave数据已同步




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

22

主题

21

回帖

164

积分

管理员

积分
164
 楼主| 发表于 2024-8-20 16:58:25 | 显示全部楼层

这东西我收了!谢谢楼主!京峰教育Linux论坛真好!
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表