MySQL 集群(主从复制)

CentOS安装与配置MySQL

  1. 安装rz命令的工具包,为了更加方便的传输文件到Linux服务器
   yum install lrzsz
   ```
2. 安装MySQL-Server

```bash
   yum install mysql-server
   ```
3. 运行与设置权限

```bash
   systemctl start mysqld   # 启动MySQL服务
   mysql -uroot # 直接登录
   use mysql -- 切换到mysql数据库
   mysql> ALTER user 'root'@'localhost' IDENTIFIED BY 'Password';  -- 注意这里最后的Passoword是密码哦
   exit;  -- 退出MySQL
   systemctl restart mysqld   # 重新启动MySQL服务
   # 此时此刻,登录MySQL就需要使用密码登录了
   ```

# 集群准备

## 主机

1. 创建测试数据库

```bash
   mysql -uroot -p
   mysql> create database db1;
   Query OK, 1 row affected (0.00 sec)

   mysql> create database db2;
   Query OK, 1 row affected (0.00 sec)

   mysql> create database db3;
   Query OK, 1 row affected (0.00 sec)
   ```
2. 配置my.cnf

```bash
   cd /etc  # 切换到配置目录
   vim my.cnf # 编辑my.cnf
   #--------------添加如下配置--------------
   [mysqld]
   server-id=233
   log-bin=mysql-bin
   binlog-do-db=db1
   binlog-do-db=db2
   binlog-do-db=db3
   #--------------添加以上配置--------------
   # 如果不写binlog-do-db,那就是所有库
   ```
3. 重启服务

```bash
   service mysqld restart
   ```
4. 创建同步用户,授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限

```sql
   CREATE USER 'slave'@'%' IDENTIFIED BY 'Password';
   GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
   ```
5. :warning: 记录配置

```sql
   show master status;
   ```

   此时要记录File和Pos的值,后面会用到。

## 从机

1. 在my.cnf配置中新增如下配置

[mysqld]
server-id=134
log-bin=mysql-slave-bin
relay_log=mysql-relay-bin
```
2. 重启mysql服务

   service mysqld restart
   ```
3. 指定主机

```sql
   change master to master_host='192.168.40.133', master_user='slave', master_password='Password', master_port=3306, master_log_file='mysql-bin.000015', master_log_pos=437, master_connect_retry=60;
   ```
4. 查看主从同步状态以及开启主从复制

```sql
   show slave status \G;
   start slave;
   show slave status \G;
   ```

# 测试

主机中插入几个数据试试看喽

# :warning: 异常错误解决方案

1. Slave_IO_Running 和 Slave_SQL_Running 总是 Connecting

    > 1、网络不通,检查ip端口
    > 2、密码不对,检查用于同步的用户名和密码
    > 3、pos不对,检查Master的Position
    > 4、mysql8特有的密码规则问题引起

2. Slave_IO_Running: No  Slave_SQL_Running: Yes

    > 修改server-uuid
    > 
    > ```bash
   > cd /var/lib/mysql
   > vim auto.cnf
   > ```
3. Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

    > 修改密码规则
    > 
    > ```sql
   > ALTER USER'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'Password';
   > ```

# 测试

![image.png](/assets/blog/2021/08/1621825683.png)  
![image.png](/assets/blog/2021/08/2992041096.png)  
![image.png](/assets/blog/2021/08/4237355910.png)  
![image.png](/assets/blog/2021/08/1545626772.png)

# 注意

从机不要进行增删改操作,否则会影响复制进度。

# 命令汇总

## 设置从机的主机配置

```sql
change master to master_host='192.168.40.133', master_user='slave', master_password='Password', master_port=3306, master_log_file='mysql-bin.000015', master_log_pos=7869, master_connect_retry=60;

查看主机和从机的状态

SHOW MASTER STATUS;  # 这样看舒服
SHOW SLAVE STATUS\G  # 这样看舒服

不会说,; 和 \G 的区别还有同学不知道叭。🤭

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。