mysql扩展:主主复制

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: mysql扩展:主主复制

扩展:主主复制

如果需要将一个slave1服务器作为另一台slave2的master,

1):在slave1上修改my.cnf,在[mysqld]模块添加

log-bin=master-bin

log-slave-updates=true

并重启mysql

2):在slave1上执行以下命令创建一个授权用户,用于在slave2上链接slave1

mysql> grant replication slave on *.* to 'myslave'@'192.168.10.%' identified by '123456' ;

mysql> flush privileges;

mysql> show master status;

 

3):show出来的信息做为slave2上连接slave1时的参数

重启Mysql服务不会影响主从关系

搭建Mysql读写分离

1:在主机amoeba上安装java环境

[root@localhost ~]# chmod +x  jdk-6u14-linux-x64.bin

[root@localhost ~]# ./jdk-6u14-linux-x64.bin

[root@localhost ~]# mv jdk1.6.0_14/ /usr/local/jdk1.6

[root@localhost ~]# vi /etc/profile

添加到最末尾:

export JAVA_HOME=/usr/local/jdk1.6

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export AMOEBA_HOME=/usr/local/amoeba/

export PATH=$PATH:$AMOEBA_HOME/bin

 

[root@localhost local]# source /etc/profile

[root@localhost local]# java -version            ##查询版本,确定java安装成功

 

 

2:安装并配置amoeba

[root@localhost local]# mkdir /usr/local/amoeba

[root@localhost ~]# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

[root@localhost ~]# chmod -R 755 /usr/local/amoeba/

[root@localhost ~]# /usr/local/amoeba/bin/amoeba

amoeba start|stop       ##有此提示表示成功

3:配置amoeba读写分离

(1)在三个mysql服务器中开放权限给amoeba访问(只在master中即可,会复制到slave中)

mysql> grant all on *.* to test@'192.168.10.%' identified by '123.com';

 

(2)在amoeba上配置amoeba.xml文件

[root@localhost amoeba]# systemctl stop firewalld

 

[root@localhost ~]# cd /usr/local/amoeba/conf

[root@localhost conf]# vi amoeba.xml

修改红色部分,此处设置的是mysql客户端连接amoeba时用的账号和密码

     

 

            amoeba                 ##30行

 

            123456               ##32行

 

           

                     

            ${amoeba.home}/conf/access_list.conf

                     

           

                     

       

 

                。。。。。。。。略。。。。。。。

 

     

           

                         ${amoeba.home}/conf/rule.xml

               ${amoeba.home}/conf/ruleFunctionMap.xml

           

             

               ${amoeba.home}/conf/functionMap.xml

               1500

               master             ##115行

 

             

               master             ##118行

               slaves    ##119行此处的注释去掉

             

               true

     

 

 

(3)编辑dbServer.xml文件

[root@localhost conf]# vi dbServers.xml

修改(注意去掉注释),slave2的复制一个slave1(如果只有一个从服务器,就不用复制)

   

                 test         ##26行

 

                     

                 123.com  ##29行,去掉注释符

                     

             

 

                      。。。。。。。。。略。。。。。。。。。。

 

 master"  parent="abstractServer">        ##45行

               

                       

                       192.168.1.102            ##48行

               

       

 

       slave1"  parent="abstractServer">              ##52行

               

                       

                       192.168.1.103               ##55行

               

       

 

 

       slaves" virtual="true">                   ##59行

               

                       

                       1

                       

                       slave1          ##65行(如果有多个从服务器,就再写上一个,逗号分隔)

               

       

 

(4)启动amoeba软件

[root@localhost ~]# cd /usr/local/amoeba/

[root@localhost amoeba]# bin/amoeba start  &

注:当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行

[root@localhost amoeba]# netstat -anpt | grep java

如果能看到8066和3306两个端口号,证明amoeba是正常开启的。

 

4:测试

(1):在client上

[root@localhost yum.repos.d]# yum -y install mariadb

[root@localhost yum.repos.d]# mysql -u amoeba -p 123456 -h 192.168.1.12 -P 8066

Enter password:            ##密码:123456

 

(2):在master服务器上创建表

mysql> use db_test;

mysql> create table zang (id int(10),name varchar(10),address varchar(20));

 

(3):在两个slave服务器上

mysql> stop slave;

 

(4):在master服务器上

mysql> insert into zang values ('1','zhang','this_is_master');

 

(5):在slave1上

mysql> use db_test;

mysql>insert into zang values ('2','zhang','this_is_slave1');

 

(6):在slave2上

mysql> use db_test;

mysql>insert into zang values ('3','zhang','this_is_slave2');

 

(7):在client上查询三次

mysql> use db_test;

mysql> select * from zang;

对比三次的输出,验证读操作,发现没有在master写入的数据,而slave上写的能查到

 

(8):在client上

mysql>insert into zang values ('4','zhang','this_is_client');

mysql> select * from zang;      ##发现在client上查询不到自己写的数据

 

(9):在master上

mysql> select * from zang;      ##能查到在client上写入的数据,说明写操作在master上

 

(10):在slave上

mysql> select * from zang;       ##发现没有数据,说明写入的操作是在master上

 

 

 

 

导出导入数据库:

[root@localhost ~]# mysqldump -u root -p --database auth > /opt/auth.sql      

[root@localhost data]# mysql -u root -p < /opt/ auth.sql

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
mysql的弹性扩展和负载均衡
mysql的弹性扩展和负载均衡
123 0
|
2月前
|
存储 固态存储 关系型数据库
rds垂直扩展
rds垂直扩展
14 2
|
2月前
|
SQL 关系型数据库 分布式数据库
rds迁移与扩展
rds迁移与扩展
37 12
|
2月前
|
算法 关系型数据库 MySQL
三高Mysql - 搭建“三高”架构之扩展与切换
三高Mysql - 搭建“三高”架构之扩展与切换
69 0
|
3月前
|
存储 监控 关系型数据库
rds迁移与扩展
rds迁移与扩展
27 4
|
4月前
|
存储 关系型数据库 MySQL
史上最全MySQL剖析:优化+存储+查询+索引+复制+可扩展+高可用
在互联网行业,MySQL数据库毫无疑问已经是最常用的数据库,LAMP (Linux +Apache + MySQL + PHP)甚至已经成为专有名词,也是很多中小网站建站的首选技术架构。
|
5月前
|
SQL 算法 关系型数据库
微服务轮子项目(27) -MySQL 主从复制、主从切换、主主复制
微服务轮子项目(27) -MySQL 主从复制、主从切换、主主复制
53 0
|
9月前
|
缓存 负载均衡 Oracle
mysql 查询扩展
mysql 查询扩展
74 1
|
10月前
|
SQL 存储 关系型数据库
MySQL中的SQL基础应用扩展
MySQL中SQL基础应用扩展
166 1
|
10月前
|
关系型数据库 MySQL
MySQL中的select扩展
MySQL中的select扩展
52 0

相关产品

  • 云数据库 RDS MySQL 版