通过yum方式实现mysql主从复制

1. 安装MySQL服务器(实现环境系统为centos7.6)

在主服务器(Master)和从服务器(Slave)上安装MySQL:

1.1 添加加MySQL官方的Yum存储库。根据你的系统版本选择合适的存储库。
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
sed -i 's#gpgcheck=1#gpgcheck=0#g' /etc/yum.repos.d/mysql-community.repo
1.2 安装MySQL服务器
sudo yum install mysql-community-server
1.3 启动mysql服务并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

2. 配置主服务器 (Master)

2.1 获取初始root密码

MySQL安装完成后,会生成一个初始的root密码。可以使用以下命令获取它:

[root@mysql-master ~]# grep 'temporary password' /var/log/mysqld.log
2024-06-15T11:21:36.234226Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: d50tow:zs5hL
2.2 设置MySQL root密码

使用初始密码登录到MySQL,并设置新密码

[root@mysql-master ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.37

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit

将 new_password 替换为你想要设置的新密码。

2.3 编辑MySQL配置文件
[root@mysql-master ~]# vim /etc/my.cnf

在 [mysqld] 部分添加或修改以下配置(根据需要):

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = your_database_name

server-id: 设置MySQL实例的唯一ID,主服务器和从服务器必须不同。
log-bin: 启用二进制日志,用于主从复制。
binlog-do-db: 指定要复制的数据库名称,可以多次指定多个数据库,如果需要复制所有数据库则不需要设置。

2.4 重启MySQL服务
[root@mysql-master ~]# systemctl restart mysqld
2.5 创建用于复制的用户

登录到MySQL控制台:

[root@mysql-master ~]# mysql -u root -p

在MySQL控制台执行以下SQL命令:

mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
2.6 查看主服务器状态并记录必要信息
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      856 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

记录输出中的 File 和 Position,稍后将用于配置从服务器。

3. 配置从服务器

3.1 一样的步骤先启动mysqld获取密码后登录更改root密码
[root@mysql-slave ~]# grep 'temporary password' /var/log/mysqld.log
2024-06-15T12:26:13.751023Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ka:dwfa.O1?w
[root@mysql-slave ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.37

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
3.2 编辑 MySQL 配置文件

在从服务器上,编辑 MySQL 配置文件(通常位于 /etc/my.cnf)。

[mysqld]
server-id=2
relay-log=relay-log

server-id:从服务器需要一个唯一的服务器 ID,这里设置为 2。
relay-log:启用中继日志。
重启MySQL服务
登录 MySQL,配置从服务器连接到主服务器。

[root@mysql-slave ~]# mysql -u root -p
# 在 MySQL 中执行以下命令
CHANGE MASTER TO
MASTER_HOST='主服务器的IP地址',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',  -- 使用在主服务器上记录的 File 值
MASTER_LOG_POS=  856;  -- 使用在主服务器上记录的 Position 值

启动复制

START SLAVE;
# 检查从服务器状态
SHOW SLAVE STATUS\G;

确保 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes。如果有错误,请检查配置文件和网络连接。

4. 验证复制

在主服务器上,创建一个测试数据库和表,并插入数据。

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO testtable VALUES (1, 'Test Data');

然后在从服务器上检查是否存在相同的数据库和表,以及数据是否已复制过来。

USE testdb;
SELECT * FROM testtable;

如果数据已正确复制,恭喜你,MySQL 主从复制已成功配置。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值