MariaDB七之双主复制

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

一、主服务器1的配置

   1、数据库初始化

1
2
3
4
5
6
[root@bogon ~]#  groupadd -r mysql
[root@bogon ~]# mkdir -p /mydata/data
[root@bogon ~]#  useradd -g mysql -r -s /sbin/nologin mysql
[root@bogon ~]# chown -R mysql:mysql /mydate
[root@bogon mysql]# chown mysql.root * -R
[root@bogon mysql]# scripts/mysql_install_db --user=mysql --databasedir=/mydata/data/

     2、准备配置文件和服务器脚本

1
2
[root@bogon mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld

     3、修改主服务器1的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
确保在[mysqld]中有以下配置选项
thread_concurrency =  2
线程数为cpu个数* 2
datadir=/mydata/data
数据目录的位置
innodb_file_per_table = ON
开启InnoDB数据表单独存放的功能
log-bin=/mydata/logs/master-bin
二进制日志存储位置及命名方式
relay-log=relay-mysql
中继日志的存储位置及命名方式
auto-increment-offset= 1
自动增长类型的初始值
auto-increment-increment= 2
自动增长类型的步长
server-id       =  100
服务器的id号

      4.授权主服务器2有复制权限

1
MariaDB [(none)]>  grant replication slave,replication client on *.* to  'wangfeng7399' @ '192.168.1.114'  identified by  'wangfeng7399' ;

   5.查看主服务器1的二进制日志文件和记录位置

1
2
3
4
5
6
MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin. 000002  |       538  |              |                  |
+-------------------+----------+--------------+------------------+

二、主服务器2的配置

      1.初始化数据库

1
2
3
4
5
6
[root@bogon ~]#  groupadd -r mysql
[root@bogon ~]# mkdir -p /mydata/data
[root@bogon ~]#  useradd -g mysql -r -s /sbin/nologin mysql
[root@bogon ~]# chown -R mysql:mysql /mydate
[root@bogon mysql]# chown mysql.root * -R
[root@bogon mysql]# scripts/mysql_install_db --user=mysql --databasedir=/mydata/data/

      2.准备配置文件和服务器脚本

1
2
[root@bogon mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld

      3.修改主服务器2的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
确保在[mysqld]中有以下配置选项
thread_concurrency =  2
线程数为cpu个数* 2
datadir=/mydata/data
数据目录的位置
innodb_file_per_table = ON
开启InnoDB数据表单独存放的功能
log-bin=/mydata/logs/master-bin
二进制日志存储位置及命名方式
relay-log=relay-mysql
中继日志的存储位置及命名方式
auto-increment-offset= 2
自动增长类型的初始值
auto-increment-increment= 2
自动增长类型的步长
server-id       =  200
服务器的id号

       4.授权主服务器1能够有复制权限

1
MariaDB [(none)]> grant replication slave,replication client on *.* to  'wangfeng7399' @ '192.168.1.112'  identified by  'wangfeng7399' ;

       5.查看主服务器2的二进制日志文件和记录位置

1
2
3
4
5
6
MariaDB [(none)]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin. 000003  |       558  |              |                  |
+--------------------+----------+--------------+------------------+

三、两个服务器建立连接

     1.主服务器1与主服务器2建立连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MariaDB [(none)]> change master to master_host= '192.168.1.114' ,master_user= 'wangfeng7399' ,master_password= 'wangfeng7399' ,master_log_file= 'master1-bin.000003' ,master_log_pos= 558 ;
启动复制线程
MariaDB [(none)]> start slave;
查看服务器状态
MariaDB [(none)]> show slave status\G
***************************  1 . row ***************************
                Slave_IO_State: Waiting  for  master to send event
                   Master_Host:  192.168 . 1.114
                   Master_User: wangfeng7399
                   Master_Port:  3306
                 Connect_Retry:  60
               Master_Log_File: master1-bin. 000003
           Read_Master_Log_Pos:  558
                Relay_Log_File: bogon-relay-bin. 000002
                 Relay_Log_Pos:  537
         Relay_Master_Log_File: master1-bin. 000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
可以看到我们的线程都已经启动了

      2.主服务器2与主服务器1建立连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MariaDB [(none)]> change master to master_host= '192.168.1.112' ,master_user= 'wangfeng7399' ,master_password= 'wangfeng7399' ,master_log_file= 'master-bin.000002' ,master_log_pos= 538 ;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
***************************  1 . row ***************************
                Slave_IO_State: Waiting  for  master to send event
                   Master_Host:  192.168 . 1.112
                   Master_User: wangfeng7399
                   Master_Port:  3306
                 Connect_Retry:  60
               Master_Log_File: master-bin. 000002
           Read_Master_Log_Pos:  538
                Relay_Log_File: relay-mysql. 000002
                 Relay_Log_Pos:  536
         Relay_Master_Log_File: master-bin. 000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
可以看到线程启动成功

四、测试

    1.在任意一个主服务器上创建一个数据库mydb,本处,我们在主服务器1上创建

1
2
3
4
5
6
7
8
9
10
11
MariaDB [(none)]> create database mydb;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

       2.在主服务器2上查看

1
2
3
4
5
6
7
8
9
10
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

       3.在主服务器2上创建表t1,字段为id(自动增长,主键,不为空)name(20个字符),并添加数据zhangsan和lisi

1
2
MariaDB [(none)]>  create table mydb.t1(id  int  unsigned not  null  primary key auto_increment,name char( 20 ));
MariaDB [(none)]> insert into mydb.t1(name) values ( 'zhangsan' ),( 'lisi' );

       4.在主服务器1上t1表中,添加wusong和luzhishen

1
MariaDB [(none)]> insert into mydb.t1(name) values ( 'wusong' ),( 'luzhishen' );

       5.在主服务器1上查询

1
2
3
4
5
6
7
8
9
MariaDB [(none)]> select * from mydb.t1;
+----+-----------+
| id | name      |
+----+-----------+
|   1  | wusong    |
|   2  | zhangsan  |
|   3  | luzhishen |
|   4  | lisi      |
+----+-----------+

       6.在服务器2上查询

1
2
3
4
5
6
7
8
9
MariaDB [(none)]> select * from mydb.t1;
+----+-----------+
| id | name      |
+----+-----------+
|   1  | wusong    |
|   2  | zhangsan  |
|   3  | luzhishen |
|   4  | lisi      |
+----+-----------+

       大功告成,如有错误,请各位大神多多批评指正,谢谢



本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1395024,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL 开发工具
MySQL双主复制
MySQL双主复制
208 0
|
关系型数据库 MySQL 网络安全
MariaDB主从复制(一主一从)
MariaDB主从复制(一主一从)
113 0
|
关系型数据库 MySQL 网络安全
mariadb主从复制
使用阿里云产品简单实现mariadb主从复制
|
关系型数据库
Mariadb的半同步复制
Mariadb的半同步复制
109 1
|
存储 域名解析 关系型数据库
MariaDB 半同步复制
本文主要为大家详解讲解 MariaDB 的半同步复制功能,包括插接安装、卸载,以及配置参数等。
789 0
MariaDB 半同步复制
|
SQL 关系型数据库 MySQL
MariaDB主从复制搭建
我的github 安装MySQL服务器 安装数据库 yum install -y mariadb-server 初始化数据库 mysql_secure_installation #MySql初始化脚本,以下为每一项的翻译 是否设置root密码 输入密码 确认密码 ...
4284 0
|
关系型数据库 测试技术 数据库
|
监控 关系型数据库 MySQL
|
监控 关系型数据库 数据库
|
监控 安全 关系型数据库