51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

mysql 主从构建实战

mysql 主从构建实战

主从同步构建过程
	1 创建2个数据库实例
	2 在从库上激活日志实功能(binlog)
	3在主库上创建连接用户
	4-在主库上备份数据
	5-在从库上恢复部分主库信息
	6-在从库上配置主库连接信息
	7在从库上激活主从同步功能
	8-检查从库同步状态
	9-测试主从同步效果验证

操作步骤01:需要准备两台以上数据库实例

# 数据库节点01服务已经构建完毕
[root@baimeidashu-01 ~]# mysqld_safe --defaults-file=/data/3307/data/my.cnf &      
[root@baimeidashu-01 ~]# netstat -lntp|grep 3307
tcp6       0      0 :::3307                 :::*                    LISTEN      114722/mysqld  
[root@baimeidashu-01 ~]# mysql -S /tmp/mysql3307.sock
    
# 数据库节点02服务已经构建完毕
[root@baimeidashu-01 ~]# mysqld_safe --defaults-file=/data/3308/data/my.cnf &
[root@baimeidashu-01 ~]# netstat -lntp|grep 3308
tcp6       0      0 :::3308                 :::*                    LISTEN      122865/mysqld   
[root@baimeidashu-01 ~]# mysql -S /tmp/mysql3308.sock

操作步骤02:主数据库二进制日志功能开启

# 主数据库需要开启binlog日志功能
mysql> show variables like '%log_bin%';
+---------------------------------+--------------------------------------+
| Variable_name                   | Value                                           |
+---------------------------------+--------------------------------------+
| log_bin                                | ON                                               |
| log_bin_basename             | /data/3307/data/binlog            |
| log_bin_index                     | /data/3307/data/binlog.index |
| sql_log_bin                         | ON                                               |
+---------------------------------+--------------------------------------+
6 rows in set (0.01 sec)
-- 核实确认binlog日志功能在主库上已经开启

操作步骤03:核实主从复制主机的信息情况

# 确认多个复制节点的服务标识不同(server id/server_uuid)
mysql> set global server_id=7;
Query OK, 0 rows affected (0.00 sec)
​
mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
|           7 |
+-------------+
1 row in set (0.00 sec)
​
mysql> select @@server_uuid;
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| 949efd68-6420-11ed-b1ad-000c2996c4f5 |
+--------------------------------------+
1 row in set (0.00 sec)
-- 主库上server_id server_uuid信息(3307节点做检查)
mysql> set global server_id=8;
Query OK, 0 rows affected (0.00 sec)
​
mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
|           8 |
+-------------+
1 row in set (0.00 sec)
​
mysql> select @@server_uuid;
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| ed6c1c6f-6f33-11ed-b630-000c2961cd06 |
+--------------------------------------+
1 row in set (0.00 sec)
-- 从库上server_id server_uuid信息(3308节点做检查)
-- 根据服务标识信息的不同,可以用于在进行主从复制时,辨别节点之间的关系
​
# 确认多个复制节点的时间信息同步
[root@baimeidashu-01 ~]# date
2022年 11月 30日 星期三 23:44:37 CST
[root@baimeidashu-02 ~]# date
2022年 11月 30日 星期三 23:44:52 CST
-- 核心确认主从节点时间信息同步
​
# 确认多个复制节点的版本信息一致
[root@baimeidashu-01 ~]# mysql -V
mysql  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
[root@baimeidashu-02 ~]# mysql -V
mysql  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
-- 部分实际应用场景中可以支持不一致,但是复制源端可以是低版本,复制目标端可以是高版本,反之不行;

操作步骤05:创建主从数据同步的用户信息

# 在主库上创建复制同步数据用户
mysql> create user repl@'192.168.30.%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to repl@'192.168.30.%';
Query OK, 0 rows affected (0.00 sec)
-- 从库会利用主库上的同步数据用户,进行数据同步传输操作

操作步骤06:进行从库部分数据信息的同步

# 可以将主库上的部分数据在从库上先进行同步
[root@baimeidashu-01 ~]# mysqldump -uroot -A -S /tmp/mysql3307.sock --master-data=2 --single-transaction >/tmp/full.sql
-- 在3307主库上进行数据的全备(模拟企业环境的历史数据全备)
[root@baimeidashu-01 ~]# mysql -S /tmp/mysql3308.sock
mysql> source /tmp/full.sql;
-- 在3308从库上进行数据的恢复(模拟企业环境的历史数据恢复)
-- 将原有主机的数据先备份,然后从库中进行恢复一部分数据,随后再进行数据信息同步追加
-- 可以利用同步方式有很多:mysqldump xtrabackup clone_plugin

操作步骤07:配置主从节点数据复制的信息

# 设置从库连接主库信息,定义从库连接主库同步位置点自动复制
mysql> help change master to
-- 获取连接主库,以及定义同步位置点的数据库配置模板信息
[root@baimeidashu-01 ~]# vim /tmp/full.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000003', MASTER_LOG_POS=681;
-- 通过备份文件获取同步位置点信息
mysql> CHANGE MASTER TO
  MASTER_HOST='192.168.30.101',
  MASTER_USER='repl',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3307,
  MASTER_LOG_FILE='binlog.000003',
  MASTER_LOG_POS=681,
  MASTER_CONNECT_RETRY=10;
-- 以上配置主从同步信息在从库进行执行;

操作步骤08:激活主从节点数据复制的线程

# 利用相应线程实现主从数据库的数据同步复制
mysql> start slave;
-- 在从库上激活数据复制同步功能
​
# 若此时数据同步失败可以重新开启同步功能
mysql> stop slave;
mysql> reset slave all;
-- 在从库上重置数据复制同步功能,重新配置change master to信息,然后重新激活同步复制功能;
​
# 进行核实主从同步功能是否实现
[root@baimeidashu-01 ~]# mysql -S /tmp/mysql3307.sock
mysql> create database baimeidashu;
-- 在主库模拟创建数据信息
[root@baimeidashu-01 ~]# mysql -S /tmp/mysql3308.sock
mysql> show databases;
-- 在从库模拟查看数据信息(确认是否同步数据)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.30.101
                  Master_User: repl
                  Master_Port: 3307
                Connect_Retry: 10
              Master_Log_File: binlog.000003
          Read_Master_Log_Pos: 869
               Relay_Log_File: baimeidashu-01-relay-bin.000002
                Relay_Log_Pos: 509
        Relay_Master_Log_File: binlog.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
-- 从库上查看数据同步状态情况,看到上面的两个Yes信息,就表示主从数据同步功能设置成功了
赞(0)
未经允许不得转载:工具盒子 » mysql 主从构建实战