阿里云RDS数据库从库搭建

时间:2024-04-06 17:53:03

概述

本文主要讲解阿里云RDS数据库的从库搭建,虽然RDS数据库自带一个备库,但是自己手里没有,总觉得不安全。

搭建过程

1. 所需环境

①一个固定IPLINUX服务器(windows没试过),无论直接连接主库,还是通过mysql proxy代理连接主库都需要一台固定IP的服务器。

②找到和RDS数据库版本一致的安装包,我的RDS数据库版本是5.6.16,所以要下载mysql5.6.16版本(这里被坑的好惨,之前从库选的是5.6.38,配置了好久都没问题,结果突然有一天报错了),不知道mysql版本的可以用“mysql> select version(); ”命令查看,mysql老版本下载地址“https://downloads.mysql.com/archives/community/”。

2. 服务器上搭建mysql,恢复数据

  ①检查mysql是否安装,如果已安装,先删掉

   卸载方法请参考http://www.jb51.net/article/97516.htm

②解压下载的mysqlRPM

# tar -xvf MySQL-5.6.16-1.el6.x86_64.rpm-bundle.tar -C mysql5.6.16

# cd mysql5.6.16/

只安装一下三个包就够了

# rpm -ivh MySQL-server-5.6.16-1.el6.x86_64.rpm

# rpm -ivh MySQL-devel-5.6.16-1.el6.x86_64.rpm

# rpm -ivh MySQL-client-5.6.16-1.el6.x86_64.rpm

   修改配置文件位置

# cp /usr/share/mysql/my-default.cnf /etc/my.cnf

③登录阿里云下载RDS数据库备份数据下载最新的数据  

  

 阿里云RDS数据库从库搭建


RDS备份文件下载完毕后,我们需要对其进行解压。按照阿里云官方文档,我们需要下载阿里云专门的脚本进行解压,而且必须是在linux OS 64bit上使用。

下载RDS解压脚本,使用如下命令:“wget http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh

将下载好的RDS数据库备份文件上传到服务器,上传到解压脚本相同的目录

给解压工具赋执行权限

# chmod 777 rds_backup_extract.sh

使用RDS解压脚本,解压RDS备份文件

# ./rds_backup_extract.sh -f /root/hins2350595_data_20171122205138.tar.gz -C /home/mysql/data/

因为是用root用户操作的所以要给目录赋权限

chown mysql:mysql -R /home/mysql/data/

修改my.cnf配置文件

[mysqld]

datadir = /home/mysql/data/ #备份解压的路径

port = 3306

server_id = 240 #一般是ip地址的最后的几个数字

socket = /home/mysql/data/mysqld.sock

max_allowed_packet=32M

log-error = /home/mysql/data/error.log

default-storage-engine=INNODB

log-bin=mysql-bin

master-info-repository=file

relay-log-info_repository=file

binlog-format=ROW

gtid-mode=on

enforce_gtid_consistency = 1

log_slave_updates = 1

#0,区分大小写; 1,不区分

lower_case_table_names=1

character_set_server = utf8 #这个字符集一定要与RDS数据库一致

innodb_checksum_algorithm=innodb

innodb_data_file_path=ibdata1:200M:autoextend

innodb_log_files_in_group=2

innodb_log_file_size=1048576000

修改完毕后启动mysql

# service mysql start

3. 主从配置

进入数据库

# mysql -h127.0.0.1 –uroot -p

不用输密码直接回车进入

然后我们再来创建root用户密码,并赋予其连接权限。如下:

use mysql;

update user set password=password('123456') where user='root';

update user set host='%' where user='root' && host='127.0.0.1';

flush privileges;

然后用Navicat测试一下远程连接,没有问题后进行下一步

重新登录数据库

# mysql -h127.0.0.1 -uroot -p123456

重置本地MySQL的复制关系

mysql> reset slave;

可能会报一下错误

 阿里云RDS数据库从库搭建

解决方法如下

①删除5张表
use mysql
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;

重新导入脚本

# source  /usr/share/mysql/mysql_system_tables.sql

然后重启数据库

mysql> reset slave;

Query OK, 0 rows affected (0.01 sec)

mysql> set global gtid_purged="69231693-651b-11e6-a629-000c29b2535c:1-16";

注:打开备份解压文件可以看到文件xtrabackup_slave_info,其中第一行就是这里要执行的

Query OK, 0 rows affected (0.02 sec)

完成后执行一下操作

mysql> change master to

         -> master_host='RDS数据库地址',

         -> master_user='数据库用户名',

         -> master_password='密码',

         -> master_auto_position=1;

注:打开备份解压文件可以看到文件xtrabackup_slave_info,其中第行就是这里要执行的

Query OK, 0 rows affected, 2 warnings (0.04 sec)

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.03 sec)

执行mysql> show slave status \G 查看结果


看到两个Yes就代表你成功了

 阿里云RDS数据库从库搭建

 

特别说明

网上有好多资料是下面这种配置

mysql> change master to

    -> master_host='RDS数据库地址',

    -> master_user='数据库用户名',

    -> master_password='密码',

    -> master_log_file='mysql-bin.000953',

    -> master_log_pos=437219;

这种方式比较适合自己搭建的主从数据库,不太适合阿里云RDS数据库的主从搭建,效果其实和上面配置中的

mysql> set global gtid_purged="69231693-651b-11e6-a629-000c29b2535c:1-16";

master_auto_position=1;

是一样的。

 

还有,阿里云提供的备份也不是绝对正确的,如果恢复了报错,重新选择一个日期的备份恢复。


好了,以上就是阿里云RDS数据库从库搭建的全部内容。

此文转载。