(一)、背景介绍
由于数据库采用阿里云的RDS数据库,当所有的读写都在一台服务器上的时候,出现了CPU负载较高,尤其在业务时间段内,并发的访问较多,造成业务压力比较大,经询问可以采用主从复制,RDS数据库只用于写,其他的本地安装的mysql数据库用于读,可以有多台,后台的程序还可以做读写分离,来减轻RDS数据库的压力负载。
安装条件:
(二)、安装配置
1、mysql数据库的安装和配置(略),具体参考https://blog.51cto.com/liqingbiao/1692315
2、替换/etc/my.cnf配置内容,其中跳过权限表进行启动
[appuser@inside-nginx152245 ~]$ cat /etc/my.cnf
[mysqld]
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/usr/local/mysql/
basedir=/usr/local/mysql
datadir=/data/mysql
innodb_undo_tablespaces=0
server_id=999999998
log_bin=mysql-log
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates=1
relay_log=relay-log
sql_mode=''
binlog_format=row
slave_skip_errors = 1062,1032
skip-grant-tables=1
#######注意server_id可以自己改,务必不要和RDS的一样了
2、安装配置Percona
1、安装Percona 仓库
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
2、查看percona库
[appuser@predb ~]$ yum list|grep percona
3、安装percona-xtrabackup-24包
yum install percona-xtrabackup-24
(二)、rpm 安装
2.1、下载percona rpm包
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
2.2、通过yum localinstall 进行安装
yum localinstall percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm #####5.6版本安装这个
yum -y install percona-xtrabackup-24.x86_64 #####5.7版本需要安装这个
2.3、percona卸载
yum remove percona-xtrabackup
3、下载备份文件并恢复。登录云服务器ECS,执行下载命令。wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz -c启用断点续传模式,-O将下载结果保存指定文件。
[root@inside-nginx152245 data]#wget -c 'http://rxxxxxxxxxxxxxxxxxxxx/custins4543777/hins6010151_data_20190621021827.tar.gz?OSSAccessKeyId=LTAIyKzxtSYNknVO&Expires=1561261206&Signature=KgiZPWl9YlX5kOX0WChx3h6Yw18%3D' -O mysql20190621.tar.gz
[root@inside-nginx152245 data]# tar xf mysql20190621.tar.gz -C mysql
[root@inside-nginx152245 data]# innobackupex --defaults-file=/etc/my.cnf --apply-log /data/mysql20190402/
190621 16:16:41 innobackupex: Starting the apply-log operation
IMPORTANT: Please check that the apply-log run completes successfully.
At the end of a successful apply-log run innobackupex
prints "completed OK!".
[root@inside-nginx152245 data]# chown -R mysql:mysql /data/mysql
[root@inside-nginx152245 data]# /etc/init.d/mysqld restart
Shutting down MySQL.... [ OK ]
Starting MySQL......... [ OK ]
4、直接进入mysql更新root密码
mysql> update user set password=PASSWORD('xxxxx') where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
##############一般使用##########
mysql>update user set host='localhost' where host='::1';
mysql>update user set host='%' where host='127.0.0.1';
5、删除/etc/my.cnf里面的skip-grant-tables=1,然后重启
[root@inside-nginx152245 data]# vim /etc/my.cnf
[root@inside-nginx152245 data]# /etc/init.d/mysqld restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
6、通过root进行登录,执行如下操作。
mysql>use mysql; ## 5.6执行
mysql>drop table slave_master_info; ### 5.6执行
mysql>drop table slave_relay_log_info; ### 5.6执行
mysql>drop table slave_worker_info; ###5.6执行
mysql>drop table innodb_index_stats; ### 5.6执行
mysql>drop table innodb_table_stats; ###5.6执行
mysql>source /usr/local/mysql/share/mysql_system_tables.sql; ##5.6执行,
mysql>exit
/etc/init.d/mysqld restart ###########5.6版本必须重启,切记执行
备注:如果yum安装的话,可以找安装路径下mysql_system_tables.sql这个文件一般都在share目录下。mysql> source /tmp/mysql-5.6.43-linux-glibc2.12-x86_64/share/mysql_system_tables.sql #######5.6版本执行。后边的路径是mysql安装的路径
7、查看xtrbackup_slave_info里边的set global gtid_purged语句,把这个copy到后面复制用
[root@inside-nginx152245 share]# cat /data/mysql/xtrabackup_slave_info
SET GLOBAL gtid_purged='5b61ae19-a34d-11e7-810f-5cb901891368:1-3823344, 70f8ce71-31fb-11e8-a373-7cd30ae014ac:1-4846380, 7302d9cf-a34d-11e7-810f-244c075fefa9:1-2828134';
CHANGE MASTER TO MASTER_AUTO_POSITION=1;
mysql> reset master
-> ;
Query OK, 0 rows affected (0.02 sec)
mysql> SET GLOBAL gtid_purged='5b61ae19-a34d-11e7-810f-5cb901891368:1-3823344, 70f8ce71-31fb-11e8-a373-7cd30ae014ac:1-4846380, 7302d9cf-a34d-11e7-810f-244c075fefa9:1-2828134';
Query OK, 0 rows affected (0.02 sec)
mysql> reset slave;
ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> reset slave;
Query OK, 0 rows affected (0.02 sec)
mysql> change master to master_host ='rm-uf64n5y6yet9b22s1.mysql.rds.aliyuncs.com',master_port=3306,master_user='dowadmin',master_password="70537449c232!dow",master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
#############注意:上面的master_host master_port master_user master_password 根据RDS主库的信息各自填写自己的信息,不要照着上面执行;
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: rm-uf64n5y6yet9b22s1.mysql.rds.aliyuncs.com
Master_User: dowadmin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.001807
Read_Master_Log_Pos: 906900
Relay_Log_File: relay-log.000004
Relay_Log_Pos: 431601
Relay_Master_Log_File: mysql-bin.001805
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 431471
Relay_Log_Space: 20108553
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 35647
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 459412040
Master_UUID: 70f8ce71-31fb-11e8-a373-7cd30ae014ac
Master_Info_File: /data/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 70f8ce71-31fb-11e8-a373-7cd30ae014ac:4846381-4867752
Executed_Gtid_Set: 5b61ae19-a34d-11e7-810f-5cb901891368:1-3823344,
70f8ce71-31fb-11e8-a373-7cd30ae014ac:1-4848839,
7302d9cf-a34d-11e7-810f-244c075fefa9:1-2828134
Auto_Position: 1
1 row in set (0.00 sec)
ERROR:
No query specified
#####搭建完成show slave status\G看到的结果应该如下,slave io/sql线程都是YES状态:
如有问题,请查看阿里云rds数据库文档(https://yq.aliyun.com/articles/689032?spm=a2c4e.11153940.0.0.48991670fK7Lg2)