MySQL 主从复制 实例讲解 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

[MySQL 主从复制 实例讲解 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区]

MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。
  • 在本文中我们主要介绍 mysql 的主从复制,读写分离在以后的文章中会涉及到
    • *
实现MySQL主从复制需要进行的配置
  • 主服务器:

    • 开启二进制日志
    • 配置唯一的 server-id
    • 获得master二进制日志文件名及位置
    • 创建一个用于slave和master通信的用户账号
  • 从服务器:

    • 配置唯一的 server-id
    • 使用master分配的用户账号读取master二进制日志
    • 启用slave服务
    • *
  • 环境准备

    • 准备好两台云主机或者虚拟机

      • 我准备的为 京东云腾讯云 的两台主机 ,系统为centos 7.4
    • 主从数据库的版本最好可以一致

      • 本实例讲解中为 Mysql 5.7.22
    • 主从数据库的内容最好可以一致

      • 本次实例讲解中,Mysql 数据库都为空
    • *
  • 主数据库 master 配置

    • 修改 my.cnf 文件 在 [mysqld] 加上如下的配置
    [mysqld]
    log-bin=mysql-bin     #开启二进制日志
    server-id=1           #设置server-id
    character_set_server=utf8
    init_connect='SET NAMES utf8'

*   重启 `mysql` 如果是yum安装可以使用 `systemctl restart mysqld`
*   登陆Mysql,创建用于同步的用户账号

```php
CREATE USER 'repl'@'139.199.***.***' IDENTIFIED BY 'YourPassword9#';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'139.199.***.***';
FLUSH PRIVILEGES;
139.199.***.***  这里填上自己从服务器的 ip 
```

*   查看master状态,记录二进制文件名 `mysql-bin.000001` 和位置 `2930`

```php
mysql>  SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |     2930 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

```

    • *
  • 从数据库 slave 设置

    • 修改 my.cnf 文件 在 [mysqld] 加上如下的配置
    [mysqld]
    server-id=2           #设置server-id
    character_set_server=utf8
    init_connect='SET NAMES utf8'

*   重启 `mysql` 如果是yum安装可以使用 `systemctl restart mysqld`
*   登陆Mysql,并执行同步SQL语句

```php
mysql> CHANGE MASTER TO
->     MASTER_HOST='116.196.***.***',             # 主服务器ip
->     MASTER_USER='repl',                        # 主服务器登陆名
->     MASTER_PASSWORD='YourPassword9#',          # 主服务器登陆密码
->     MASTER_LOG_FILE='mysql-bin.000001',        # 二进制文件的名称
->     MASTER_LOG_POS=2930;                       # 二进制文件的位置
```

*   启动 `slave` 同步进程

```php
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

```

*   查看 `slave` 状态

```php
mysql> show slave status\G;
如果以下两项都是 yes 就表示主从同步设置成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

```

参考博客


Original url: Access

Created at: 2018-10-10 15:12:20

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论