searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MySQL 8.0.26主从复制配置

2023-06-26 01:18:48
44
0

什么是 MySQL 主从复制

MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。可以简单理解为,主数据库数据有任何变化,从数据库都会跟着变化。

为什么需要主从复制

  1. 当主服务器出现问题时,可以切换到从服务器。提高可用性
  2. 在从服务器可以执行查询工作,降低主服务器压力。读写分离
  3. 在从服务器进行备份,避免备份期间影响主服务器服务。容灾

主从复制流程

  1. 从库生成两个线程,一个 I/O 线程,一个 SQL 线程;
  2. I/O 线程去请求主库的 binlog,并将得到的 binlog 日志写入 relay log(中继日志)中;
  3. 主库会生成一个 log dump 线程,用来给库从库 I/O 线程传 binlog;
  4. SQL 线程会读取 relay log 文件中的日志,并解析成具体操作,来实现主从的操作一致,最终数据一致。

配置流程

配置主节点

启用 binary log,指定 server id。

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

重启让配置生效

service mysqld restart

登录mysql并检查master状态

# 登录mysql数据库
$ mysql -uroot -p
# 查看master的状态
mysql> show master status;

创建用于备份的用户

mysql> CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
mysql> ALTER USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

 

锁定主数据库

锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致。

mysql> FLUSH TABLES WITH READ LOCK;

获取当前 binary log File 和 Position 信息, 记下来备用。

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000014
Position: 1024555439
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:

备份主数据库

使用mysqldump工具, 先导出主数据库数据,并在开始复制前导入从数据库。

下面的例子将所有库的数据都导出到一个名叫 dbdump.db 的文件,同时使用 `--source-data`参数,该参数会自动添加从数据库开始复制进程所需的 `CHANGE REPLICATION SOURCE TO` 语句。

$ mysqldump --databases <db_name> -u<username> -p'<password>' --source-data > dbdump.sql

如果只需要备份特定的数据库,使用 `--databases` 参数。

导入数据到从数据库

$ mysql -u<username> -p<password> < dbdump.sql

备份完成后,可以校验一下数据是否完整。

配置从节点

[mysqld]
server-id=2 # 保持唯一
log-bin=mysql-bin # 二进制文件的名称

配置好之后,重启mysql服务。

然后配置主从连接。

mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='<source ip>', SOURCE_PORT=3306, SOURCE_USER='replica', SOURCE_PASSWORD='<password>', SOURCE_LOG_FILE='mysql-bin.000002', SOURCE_LOG_POS=2223026;

启动主从复制。

mysql> START REPLICA;

检查从节点状态,如果Slave_IO_Running 和 Slave_SQL_Running 都是Yes,说明开启主从复制过程成功。

mysql> SHOW REPLICA STATUS\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: localhost
                  Source_User: repl
                  Source_Port: 13000
                Connect_Retry: 60
              Source_Log_File: source-bin.000002
          Read_Source_Log_Pos: 1307
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 1508
        Relay_Source_Log_File: source-bin.000002
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
......

解锁主数据库

接触主数据的锁定状态。

UNLOCK TABLES;
0条评论
0 / 1000
b****m
2文章数
0粉丝数
b****m
2 文章 | 0 粉丝
b****m
2文章数
0粉丝数
b****m
2 文章 | 0 粉丝
原创

MySQL 8.0.26主从复制配置

2023-06-26 01:18:48
44
0

什么是 MySQL 主从复制

MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。可以简单理解为,主数据库数据有任何变化,从数据库都会跟着变化。

为什么需要主从复制

  1. 当主服务器出现问题时,可以切换到从服务器。提高可用性
  2. 在从服务器可以执行查询工作,降低主服务器压力。读写分离
  3. 在从服务器进行备份,避免备份期间影响主服务器服务。容灾

主从复制流程

  1. 从库生成两个线程,一个 I/O 线程,一个 SQL 线程;
  2. I/O 线程去请求主库的 binlog,并将得到的 binlog 日志写入 relay log(中继日志)中;
  3. 主库会生成一个 log dump 线程,用来给库从库 I/O 线程传 binlog;
  4. SQL 线程会读取 relay log 文件中的日志,并解析成具体操作,来实现主从的操作一致,最终数据一致。

配置流程

配置主节点

启用 binary log,指定 server id。

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

重启让配置生效

service mysqld restart

登录mysql并检查master状态

# 登录mysql数据库
$ mysql -uroot -p
# 查看master的状态
mysql> show master status;

创建用于备份的用户

mysql> CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
mysql> ALTER USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

 

锁定主数据库

锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致。

mysql> FLUSH TABLES WITH READ LOCK;

获取当前 binary log File 和 Position 信息, 记下来备用。

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000014
Position: 1024555439
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:

备份主数据库

使用mysqldump工具, 先导出主数据库数据,并在开始复制前导入从数据库。

下面的例子将所有库的数据都导出到一个名叫 dbdump.db 的文件,同时使用 `--source-data`参数,该参数会自动添加从数据库开始复制进程所需的 `CHANGE REPLICATION SOURCE TO` 语句。

$ mysqldump --databases <db_name> -u<username> -p'<password>' --source-data > dbdump.sql

如果只需要备份特定的数据库,使用 `--databases` 参数。

导入数据到从数据库

$ mysql -u<username> -p<password> < dbdump.sql

备份完成后,可以校验一下数据是否完整。

配置从节点

[mysqld]
server-id=2 # 保持唯一
log-bin=mysql-bin # 二进制文件的名称

配置好之后,重启mysql服务。

然后配置主从连接。

mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='<source ip>', SOURCE_PORT=3306, SOURCE_USER='replica', SOURCE_PASSWORD='<password>', SOURCE_LOG_FILE='mysql-bin.000002', SOURCE_LOG_POS=2223026;

启动主从复制。

mysql> START REPLICA;

检查从节点状态,如果Slave_IO_Running 和 Slave_SQL_Running 都是Yes,说明开启主从复制过程成功。

mysql> SHOW REPLICA STATUS\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: localhost
                  Source_User: repl
                  Source_Port: 13000
                Connect_Retry: 60
              Source_Log_File: source-bin.000002
          Read_Source_Log_Pos: 1307
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 1508
        Relay_Source_Log_File: source-bin.000002
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
......

解锁主数据库

接触主数据的锁定状态。

UNLOCK TABLES;
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1