mysql异步备份_MySQL主从异步复制备份案例及Amoeba是实现读写分离

实验环境 一主两从

MySQL-master   192.168.200.111

MySQL-slave1   192.168.200.112

MySQL-slave2   192.168.200.113

所有服务器关闭防火墙

所有服务器安装 yum -y install mariadb  mariadb-server

systemctl start mariadb

建立时间同步环境,在主服务器上安装配置NTP时间同步服务器

主:yum -y install ntp

cp  /etc/ntp.conf  /etc/ntp.conf.bak

vim  /etc/ntp.conf

//手动添加

22  server 127.127.1.0

23  fudge 127.127.1.0 startum 8

systemctl  start ntpd

修改配置文件:vim /etc/my.cnf

[mysqld]

server_id=1

log-bin=mysql-binlog

log-slave-updates=true

systemctl restart mariadb

mysql  登录数据库

给从服务器授权

MariaDB [(none)]> grant replication slave on *.* to 'slave'@'192.168.200.%' identified by '123123';

MariaDB [(none)]> flush privileges;

mysql> show master status;

+---------------------+----------+--------------+------------------+------------------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+---------------------+----------+--------------+------------------+------------------------------------------+

| mysql-binlog.000004 | 642 | | | fd47807d-efdc-11e9-abaa-000c29d5bd44:1-2 |

+---------------------+----------+--------------+------------------+------------------------------------------+

配置从服务器

yum  -y install  ntpdate

ntpdate 192.168.200.111

[mysqld]

server-id=2            #主从服务器的server-id不能相同!,两个从的server-id也不能一样

relay-log=relay-log-bin        ##开启中继日志

relay-log-index=slave-relay-bin.index

systemctl restart mariadb

mysql  #登录MySQL

MariaDB [(none)]> change master to master_host='192.168.200.111',master_user='slave',master_password='123123',master_log_file='mysql-binlog.000001',master_log_pos=245;

MariaDB [(none)]> start slave;    #开启主从复制功能

MariaDB [(none)]> show slave status\G;

50117008fc819bf506a2e422de86ad1b.png

测试,在111上创建数据库,看看从服务器是否写入

二。Amoeba实现MySQL读写分离

实验环境:

192.168.200.111      MySQL-master

192.168.200.112     MySQL-slave1

192.168.200.113     MySQL-slave2

192.168.200.114     Amoeba

192.168.200.115    客户机

先实现MySQL数据库的主从复制,方法见上面所写

1.安装Amoeba上安装Java环境 (推荐安装jdk1.5,或1.6,不建议安装1.7版本)

需要的软件包有

amoeba-mysql-binary-2.2.0.tar.gz

jdk-6u14-linux-x64.bin

chmod +x jdk-6u14-linux-x64.bin

./jdk-6u14-linux-x64.bin

一路空格,输入yes,回车完成

mv jdk1.6.0_14/ /usr/local/jdk1.6

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.6

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

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

export AMOEBA_HOME=/usr/local/amoeba/

export PATH=$PATH:$AMOEBA_HOME/bin

source /etc/profile

java -version

查看版本是不是1.6

如果不是rm  -rf /usr/bin/java

安装配置Amoeba

mkdir /usr/local/amoeba

tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

chmod -R 755 /usr/local/amoeba/

3.配置amoeba实现mysql-slave1,mysql-slave2读负载均衡

在三台MySQL服务器上对amoeba授权

MariaDB [(none)]> grant all on *.* to 'admin'@'192.168.200.%' identified by '123123';

cd /usr/local/amoeba/conf/

MariaDB [(none)]> flush privileges;

编辑配置amoeba.xml配置文件,设置读写分离

cp amoeba.xml amoeba.xml.bak

vim amoeba.xml

11  8066   //默认端口8066,无需修改

30   amoeba   //设置一个用户,后面客户端访问时使用

32    123123     //设置登录密码

115    master      //默认的服务器池

117     master           //写服务器池

118     slaves          //读服务器池

有些上面有注释   ,把他删掉

编辑dbServer.xml配置文件,设置登录MySQL服务器的用户及密码,MySQL服务器节点的IP地址,负载均衡算法

cp dbServers.xml dbServers.xml.bak

vim dbServers.xml

20  3306    //设置MySQL连接端口,默认为3306

26  admin       //设置访问MySQL服务器所用的用户名

29  123123      //设置访问MySQL服务器所用的密码

45      //设置MySQL服务器及IP地址

48   192.168.200.111      //主MySQL服务器IP地址

52   

55    192.168.200.112    //从服务器slave1 IP地址

58    

61     192.168.200.113    //从服务器slave 2 IP地址

因为没有slave2的配置,所以复制 slave1  的配置  ,添加并修改

65            // 服务器池

71    slave1,slave2     //前面定义的服务器节点名

4.  启动amoeba

nohup  /usr/local/amoeba/bin/amoeba start &

netstat -lnpt | grep 8066

5.测试

此时的三台MySQL服务器是主从备份

在mysql-master 创建db_test 库及该库下的test表

MariaDB [(none)]> create database db_test;

MariaDB [db_test]> create table test(id int(10),name varchar(20));

可以在112和113上查看该库

show  databases;

在112和113 服务器上停止主从备份

MariaDB [(none)]> stop slave;

在111上添加表内容

MariaDB [db_test]> insert into test values('1','master');

此前在服务器上同步了表,所以在从服务器上可以直接手动插入其他内容

在slave1 上:

MariaDB [(none)]> insert into db_test.test values('2','slave1');

在slave2上:

MariaDB [(none)]> insert into db_test.test values('3','slave2');

在客户机115上进行读测试:

yum -y install mariadb

mysql -uamoeba -p123123 -h 192.168.200.114 -P8066

(1) 读测试

7a62e2e90f4537b224ab9b2ff7ad8f84.png

(2)写测试:

MySQL [(none)]> insert into db_test.test values('4','clieent');

在master服务器上查看是否写入:

f96c6fd8a964904a18391e49cf026985.png

实验完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值