MariaDB七之双主复制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 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,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 IDE 开发工具
研发提效工具3 - IDEA极速打开项目方案
# 背景 作为Idea、Android Studio、PyCharm等`jetbrains`系列IDE的开发者,每次打开一个工程项目时,一般都使用鼠标点击IDE左上角的Open菜单来才做。本文介绍一种基于Alfred的快捷方式进行打开操作。 # 效果图 ![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/affab
758 0
研发提效工具3 - IDEA极速打开项目方案
|
小程序 JavaScript 关系型数据库
微信小程序远程连接阿里云服务器mysql——我与阿里云的相遇
第一次接触阿里云服务器:用小程序通过nodejs连接远程服务器
2254 0
微信小程序远程连接阿里云服务器mysql——我与阿里云的相遇
|
网络协议 Java 数据库连接
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
257 6
|
11月前
|
运维 自然语言处理 Linux
OS Copilot-操作系统智能助手-小白入门必修课
OS Copilot是一款基于大模型技术的智能助手,提供自然语言问答、辅助命令执行和系统运维调优功能,让Linux操作变得轻松流畅。它不仅提高了我的工作效率,还让我在处理服务端部署时更加得心应手,是不可多得的开发利器。
|
人工智能 算法 C语言
编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0
通过上述代码和解释,我们实现了一个高效判断素数的C语言函数 `isprime`。该函数结合了基础判断和优化的循环逻辑,确保高效准确地判断给定整数是否为素数。希望本文能帮助你更好地理解和实现素数判断算法。
825 1
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
存储 安全 数据可视化
日常工作必备的5款实用软件推荐
本文推荐了几款实用软件,旨在提升日常工作生活的效率与安全性。包括数据可视化工具Keyviz、提升办公效率的Office Tab Enterprise、微信空号检测工具燃精灵、专注工作的时间管理软件Cold Turkey,以及密码管理工具KeeWeb。通过这些工具,可更好地管理工作、提升生产力并保障数字安全。
302 3
|
网络协议 网络架构
看完,保你秒懂“ARP中间人攻击”原理
看完,保你秒懂“ARP中间人攻击”原理
283 5
|
缓存 应用服务中间件 区块链
PbootCms上传图片变模糊、上传图片尺寸受限的解决方案
PbootCms上传图片变模糊、上传图片尺寸受限的解决方案
|
数据采集 数据可视化 大数据
R语言在统计分析中的应用与实践
【7月更文挑战第30天】R语言以其强大的统计分析能力和开源自由的特性,在统计分析领域发挥着重要作用。无论是基础的描述性统计、推断性统计,还是复杂的回归分析、时间序列分析和生存分析,R语言都提供了丰富的函数和包来支持。通过学习和掌握R语言,数据分析师和研究者可以更加高效地进行数据分析,获取有价值的信息和结论。未来,随着大数据和云计算等新兴技术的发展,R语言的应用前景将更加广阔。