openEuler系统实现MySQL数据库主从复制

1、安装MySQL服务

在主从两台服务器通过以下Shell命令完成MySQL服务软件包的安装及基本配置

bash 复制代码
# 安装软件包
dnf -y install mysql-server

# 初始化MySQL
mysql_secure_installation

# 配置防火墙,以允许访问mysql服务
firewall-cmd --permanent --add-service=mysql 

firewall-cmd --reload 

# 启动MySQL服务
systemctl enable mysqld --now

2、配置主数据库

在主服务器中,编辑/etc/my.cnf配置文件,在【mysqld】节配置以下两行内容:

bash 复制代码
[mysqld]
server-id = 1        # 设置主数据库id
log_bin = mysql-bin  #开启二进制日志

3、创建复制用户

在主服务器中,连接MySQL数据库,通过以下两条命令创建一个专用于复制的用户,并对其授权。

sql 复制代码
-- 创建新用户并使用传统认证方式
CREATE USER 'replicator'@'%' IDENTIFIED WITH mysql_native_password BY '此处用你自己的mysql密码代替';

-- 授权必要权限
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';

4、备份主数据库的数据

在主服务器中,通过以下Shell命令将主数据库备份到backup.sql文件中。

bash 复制代码
[root@Master ~]# mysqldump -u root -p --all-databases --single-transaction > backup.sql
  • --all-databases表示备份所有数据库
  • --single-transaction 表示在单个事务中执行备份,确保数据一致性

5、重启MySQL服务,并查看主服务器状态

在主服务器中,通过以下命令重启MySQL服务,并查看并记录主服务器的状态,其中File和Postion后面从服务器配置时需要用到。

bash 复制代码
# 重启MySQL服务,以让前面的配置生效
[root@Master ~]# systemctl restart mysqld.service

# 查看主服务器状态
[root@Master  ~]# mysql -u root -p
......此处省略部分输出......

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |     1265 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6、配置从数据库

在从数据库服务器中配置/etc/mycnf文件。

bash 复制代码
[mysqld]
server-id = 2 # 设置从数据库id

7、加载备份的数据库

将主数据库的备份文件backup.sql文件复制到从服务器中,然后进行加载

bash 复制代码
# 确认当前目录下存在备份的数据库文件
[root@Slave ~]# ll
总用量 1344
-rw-r--r--. 1 root root 1368226  8月 29 21:45 backup.sql

# 连接数据库,并加载备份文件
[root@Slave ~]# mysql -u root -p
......此处省略部分输出......

mysql> source backup.sql

8、启动数据复制

在从服务器中,通过以下命令配置主服务器信息

bash 复制代码
# 进入MySQL,配置主服务器信息
[root@Slave ~]# mysql -u root -p
......此处省略部分输出......

# 重新配置主服务器信息
CHANGE MASTER TO
  MASTER_HOST='此处改为主服务器IP地址',
  MASTER_USER='replicator',
  MASTER_PASSWORD='此处改为主数据库的连接密码',
  MASTER_LOG_FILE='mysql-bin.000002'      #此处为前面查看主服务器状态的File值',
  MASTER_LOG_POS=1265       # 此处为前面查看主服务器状态的Position值;

# 启动复制
START SLAVE;

# 检查状态
SHOW SLAVE STATUS\G

# 重点关注以下三个值

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
        Seconds_Behind_Master: 0

9、测试

通过navicat等数据库连接工具连接到主数据库,然后修改某个表中的数据,再查看从数据库中对应表的数据是否有同步更新。

相关推荐
曹轲恒17 小时前
【Redis持久化核心】AOF/RDB通俗详解+多场景对比
数据库·redis·bootstrap
冉冰学姐17 小时前
SSM疫情期间学生作业线上管理系统55zmw(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·计算机毕设·ssm作业管理系统
qq_124987075317 小时前
基于Srpingboot心晴疗愈社平台的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·spring·microsoft·毕业设计·计算机毕业设计
霖霖总总17 小时前
[小技巧55]深入解析数据库日志机制:逻辑日志、物理日志与物理逻辑日志在 MySQL InnoDB 中的实现
数据库·mysql
OceanBase数据库官方博客17 小时前
主流关系型数据库系统缺陷实证研究——OceanBase 校企联合研究
数据库·oceanbase·分布式数据库
打工的小王18 小时前
redis(三)redis持久化和集群(redis版本:5.0.4)
数据库·redis·缓存
Access开发易登软件18 小时前
Access 窗体中实现数字滚动动画:Timer + Easing 的技术实现
运维·数据库·nginx·microsoft·access
心之伊始18 小时前
Redis 持久化机制深度解析(RDB / AOF / 混合持久化)
数据库·redis·bootstrap
马猴烧酒.18 小时前
【JAVA数据传输】Java 数据传输与转换详解笔记
java·数据库·笔记·tomcat·mybatis