Mysql replication 配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySQL 设定写入 Master 后, 自动 Replication 到 Slave 去, 运作基本原理是:

  1. INSERT/UPDATE/DELETE 语法, 自动写入 Master 的 binlog file.
  2. 由 GRANT REPLICATION 授权的账号, 自动将 SQL 语法 repl 到 Slave 的 DB 执行.
  3. 因而完成 Replication 的动作.
========================================================================

操作系统:Linux

MasterIP192.168.2.122

SlaveIP192.168.2.123

注意:在做配置的过程中,最好不要向 Master 数据库做写入操作。

1        主机master设置

1.1       测试用数据库

1.       建立名为test1的数据库

create database test1;

2.       建立表名为test1的表

CREATE TABLE `test1` ( `id` bigint(20) unsignedNOT NULL AUTO_INCREMENT,   `name`  varchar(100) ,   PRIMARY KEY(`id`)  );

3.       在表test1中插入3条测试数据

INSERT INTO `test1` VALUES (1,'name1');

INSERT INTO `test1` VALUES (2,'name2');

INSERT INTO `test1` VALUES (3,'name3');

1.2       设置Mysql Replication

1.       增加一用于数据库同步的用户root

mysql>GRANT REPLICATIONSLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO'root'@'192.168.2.123' IDENTIFIED BY 'password';

(授与从192.168.2.123主机上登录用户root数据复制权限)

2.       使权限生效,这步可不做,因为过会要重启mysql

mysql>flush privileges;

3.       退出mysql命令行界面

mysql> exit

4.       停止mysql服务

service mysqld stop

5.       更改Mysql配置文件/etc/my.cnf

1)       打开mysql配置文件

vi /etc/my.cnf

2)       在配置文件中添加以下内容

   #bind-address           = 127.0.0.1

   server-id               = 1    (注意不能与其他服务器的配置一样)
log_bin                 = /var/log/mysql/mysql-bin.log

# 若是 innodb, 且有用 transaction 的, 需再加入下面
innodb_flush_log_at_trx_commit=1
sync_binlog=1

#如果指定具体的数据库,需加入下面一行

binlog-do-db= test1

3)      记录 master status

mysql>show master status; #这边资料都要记好,等一下设定slave要用

+----------------------+------------+------------------+----------------------+
| File                     | Position   | Binlog_Do_DB | Binlog_Ignore_DB  |
+----------------------+------------+------------------+----------------------+
| mysql-bin.000014  |      232   |                      |                          |
+----------------------+------------+------------------+----------------------+


6.       将要进行热备的数据库test1打包

tar czvf /var/lib/mysql/test1.tar.gztest1

7.       启动Mysql

service mysqld start

2        备机slave设置

1.       更改Mysql配置文件/etc/my.cnf

3)       打开Mysql的配置文件

vi /etc/my.cnf

4)       在配置文件中添加以下内容

master-host = 192.168.2.122

master-user = root

master-password = password

master-port = 3306

master-connect-retry = 10

master_log_file='mysql-bin.000014' # 这边就要用到之前 Master 抄下来的值.

master_log_pos=232   # 这边就要用到之前 Master 抄下来的值.

replicate-do-db = test1  #当需要具体到某个数据库的时候,才配置该行

2.       将先前(1.2中第6步)从master打包的数据库文件test1.ter.gz发送到备机slave的相应目录下,本次在/var/lib/mysql目录,解压文件并修改其可执行权限

cd /var/lib/mysql

tar zxvf  test1.tar.gz

chmod 700 test1

chmod 660 test1

3.       重新启动Mysql服务

service mysqld  restart

4.       启动slave

mysql> START SLAVE;

查看slave状态:

mysql> show slavestatus\G;

*************************** 1. row***************************

            Slave_IO_State:Waiting for master to send event

               Master_Host: 192.168.2.122

               Master_User: root

               Master_Port: 3306

             Connect_Retry: 10

           Master_Log_File: mysql-bin.000002

       Read_Master_Log_Pos: 582

            Relay_Log_File: mysqld-relay-bin.000005

             Relay_Log_Pos: 515

     Relay_Master_Log_File: mysql-bin.000002

          Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

           Replicate_Do_DB: test1,test1

       Replicate_Ignore_DB:

        Replicate_Do_Table:

    Replicate_Ignore_Table:

   Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                Last_Errno: 0

                Last_Error:

              Skip_Counter:0

       Exec_Master_Log_Pos: 582

           Relay_Log_Space: 515

           Until_Condition: None

            Until_Log_File:

             Until_Log_Pos: 0

        Master_SSL_Allowed: No

        Master_SSL_CA_File:

        Master_SSL_CA_Path:

           Master_SSL_Cert:

         Master_SSL_Cipher:

            Master_SSL_Key:

     Seconds_Behind_Master: 0

1 row in set (0.00 sec)

******************************************************

可以看到

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果都是yes,代表已经在同步

至此server服务器上的Mysql设置完毕

3        测试

1.       主机和备机都正常运行情况,对主机进行增加一条记录INSERT INTO `test1` VALUES(6,'name6'); 检测备机是否也增加了此条记录,经检查,数据相同

2.       主机和备机都正常运行情况,在主机没有对数据库操作的情况下测试主备数据是否一致,经查看主机和备机的的test1表,记录相同,说明备机成功复制数据。

3.       主机和备机都正常运行情况,停掉备机mysql,对主机进行添加记录的操作,然后再重启备机mysql,经检查,两边数据完全一致。

4.       主机和备机都正常运行情况,在主机执行mysql> delete fromtest1 where id=3; 检测两边数据是否一致。经检查,两边数据完全一致。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
|
4月前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
56 0
|
1月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
98 2
|
2月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
79 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
3月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
4月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
521 8
centos7 mysql安装及配置
|
3月前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
367 3