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> 
相关推荐
SelectDB1 小时前
慢 SQL 诊断准确率 99.99%,天翼云基于 Apache Doris MCP 的 AI 智能运维实践
数据库·人工智能·apache
JIngJaneIL1 小时前
基于java+ vue交友系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·交友
MySQL实战2 小时前
MySQL 在哪些场景下不会写 binlog
mysql
苹果酱05672 小时前
解决linux mysql命令 bash: mysql: command not found 的方法
java·vue.js·spring boot·mysql·课程设计
数据知道2 小时前
为什么要用向量数据库?常用的向量数据库有哪些以及如何选择?
数据库·向量数据库
dixiuapp2 小时前
设备维修记录系统,从数据沉淀到价值挖掘的跃迁
大数据·数据库·人工智能
问道飞鱼3 小时前
【数据库知识】MySQL 多表关联高效实现指南:场景化方案与底层原理
数据库·mysql·多表关联
马克学长3 小时前
SSM校园二手交易平台7fut7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·校园闲置资源交易
dblens 数据库管理和开发工具3 小时前
MySQL :5.7与8.0版创建用户与授权、密码认证插件、角色、密码过期策略
数据库·mysql·dblens·mysql创建用户·mysql设置密码·mysql用户授权