mysql主从同步(复制)搭建

一、主服务器操作

1.docker-compose文件

复制代码
version: '3'

services:
  mysql: 
    image:  mariadb:10.5.28
    container_name: mariadb_1
    restart: always
    ports:
      - 13306:3306
    environment:
      MARIADB_ROOT_PASSWORD: 123456     # 设置root用户密码
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      MARIADB_DATABASE: test01              # 初始化的数据库名称
    volumes:
      - ./mysql_conf:/etc/mysql
      - ./mysql_data:/var/lib/mysql

2.配置文件编写

复制代码
vim /data/mariadb/mysql_conf/mariadb.conf.d/50-server.cnf

# 启用binlog日志
server-id              = 1
log-bin=mysql1

3.重启服务

4.创建一个主从复制用户并授权

复制代码
#用户授权

[root@mysql53 ~]# mysql
mysql> create user repluser@"%" identified by "123456";
mysql> grant replication slave on *.*  to repluser@"%";

create user dbuser@"%" identified by "dbuser";
grant replication slave on *.*  to dbuser@"%";

5.查看信息

复制代码
MariaDB [(none)]> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql1.000001 |      645 |              |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.000 sec)


MariaDB [(none)]> show master status;
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000057 |      342 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.000 sec)

二、从服务器操作

1.docker-compose文件

2.配置文件编写

复制代码
vim /data/mariadb/mysql_conf/mariadb.conf.d/50-server.cnf

# 启用binlog日志
server-id              = 2
relay-log=mysql-relay-bin # 中继日志

3.重启服务

4.登录mysql操作

复制代码
[root@mysql54 ~]# mysql
mysql> change master to  
master_host="192.168.88.13", 
master_port=13306,
master_user="repluser",
master_password="123456",
master_log_file="mysql1.000001", 
master_log_pos=645;


master_host="192.168.88.13",  # 主服务器的ip
master_port=13306,  # 主服务器的端口
master_user="repluser",       # 用户名
master_password="123456", # 密码
master_log_file="mysql1.000001",  # 刚刚主查出来的
master_log_pos=645;  # 刚刚主查出来的

4.启动从库上的复制相关线程

复制代码
mysql> start slave ; 
线程名称 核心职责
Slave IO Thread(IO 线程) 连接主库 → 读取主库的二进制日志(binlog) → 将 binlog 内容写入从库的中继日志(relay log)
Slave SQL Thread(SQL 线程) 读取从库的中继日志 → 解析其中的 SQL 语句 → 在从库上执行这些 SQL,实现数据和主库一致

5.查看状态信息

复制代码
mysql> show slave status \G 

mysql> show slave status \G 
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.88.53
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql53.000001
          Read_Master_Log_Pos: 667
               Relay_Log_File: mysql54-relay-bin.000002
                Relay_Log_Pos: 322
        Relay_Master_Log_File: mysql53.000001
             Slave_IO_Running: Yes   //IO线程
            Slave_SQL_Running: Yes   //SQL线程

三、测试

1.在master服务器建库 、建表、添加用户 、授权

复制代码
[root@mysql53 ~]# mysql 连接服务
mysql> create database gamedb; 建库
mysql> create table gamedb.user(name char(10) , class char(3)); 建表
mysql> create user plj@"%" identified by "123456"; 创建用户
mysql> grant select,insert,update,delete on gamedb.* to plj@"%" ; 授予权限

2.在slave服务器查看库、表、用户

复制代码
[root@mysql54 ~]# mysql 连接服务
mysql> show  databases; 查看库
mysql> desc gamedb.user; 查看表头
mysql> select user from mysql.user where user="plj"; 查看用户
mysql> show grants for plj@"%" ; 查看权限

3.连接master服务器存储数据

复制代码
mysql -h192.168.88.53 -uplj -p123456
mysql> insert into gamedb.user values ("yaya","nsd");
mysql> select  * from gamedb.user;
+------+-------+
| name | class |
+------+-------+
| yaya | nsd   |
+------+-------+
1 row in set (0.01 sec)
mysql>

4.连接从服务器查看数据

复制代码
[root@mysql50 ~]# mysql -h192.168.88.54 -uplj -p123456 
Mysql> select  * from gamedb.user;
+------+-------+
| name | class |
+------+-------+
| yaya | nsd   |
+------+-------+
Mysql> 
相关推荐
东方巴黎~Sunsiny3 分钟前
mysql大表空间整理注意点
数据库·mysql
難釋懷17 分钟前
Redis简单介绍
数据库·redis·缓存
lifejump18 分钟前
Pikachu | SQL-inject
数据库·sql
C-200226 分钟前
Casdoor 容器部署并实现 JumpServer 对接 CAS
数据库
ChineHe29 分钟前
Redis数据类型篇003_详解Lists列表类型及其命令
数据库·redis·缓存
AllData公司负责人1 小时前
AllData数据中台-数据同步平台集成开源项目Seatunnel-Web,完成Mysql到Doris同步流程
数据库·mysql·开源
Mr.Entropy1 小时前
数据库读写分离介绍
数据库
Codeking__1 小时前
Redis的value类型及编码方式介绍——string
数据库·redis·缓存
ShuiShenHuoLe2 小时前
maven配置阿里源
java·数据库·maven
码农爱学习2 小时前
C语言结构体对齐是怎么计算
java·c语言·数据库