mysql主备迁移_数据库迁移杂谈(innobackupex mysql主备 mysql热备 mysql环境搭建)

1、mysql环境搭建

A、下载mysql对应RPM包:

cat /etc/redhat-release; // centos 7

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum install mysql57-community-release-el6-9.noarch.rpm

yum repolist all | grep mysql;查看安装包

;修改配置中的 enabled选项,安装mysql5.7,将mysql57-community中的enabled=0修改为enabled=1

vim /etc/yum.repos.d/mysql-community.repo;

B、安装mysql:

yum install mysql-community-server

C、启动mysql:

service mysqld start(centos7以上版本已经不需要mysqld_safe来启动并监控mysql)

mysql启动后会创建一个超级用户帐号:

'root'@'localhost,并且会为帐号生成随机密码,随机密码存储在错误日志文件里面。

要显示它,使用以下命令:grep 'temporary password' /var/log/mysqld.log

在安装完成后应尽快使用刚才生成的随机密码登录mysql,然后修改超级用户帐号密码

shell> mysql -uroot -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';// 密码难度:字母大小写、数字、特殊字符

2、mysql主从设置

A、整体上来说,复制有3个步骤:

(1)、master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2)、slave将master的binary log events拷贝到它的中继日志(relay log);

(3)、slave重做中继日志中的事件,将改变反映它自己的数据。

0_1330439010P7lI.gif

B、一台master,两台为slave:

master:10.4.32.130

slave :10.4.32.132(下一代的master)

slave :10.4.32.133

C、master配置:

在mysql配置文件my.cnf的末尾加上:

log-bin=mysql-bin #slave会基于此log-bin来做replication

server-id=1 #master的标示

sync_binlog=1

D、slave配置:

在mysql配置文件my.cnf的末尾加上:

server-id=2 #slave的标示 ,ip2int(10.4.32.132)

server-id=3 #slave的标示 ,ip2int(10.4.32.133)

E、在master中增加用于数据同步的账户:

grant replication slave on . to 用户名@% identified by '密码'

在master中查看Master status:

show master status;

F、配置slave:

stop slave;

change master to master_user='username',master_password='password',master_host='10.4.32.130',master_port=3306,master_log_file=’mysql-bin.000001’,master_log_pos=10000;

// 其中master_log_file,master_log_pos 从master status中查看

start slave;

3、mysql迁移

A、数据拷贝:

数据备份(由于我这是由于磁盘问题进行数据库迁移的,所以数据复制我选择的是远程复制)。

innobackupex --defaults-file=/etc/my.cnf --user=username --password=password --socket=/tmp/mysql.sock --slave-info --use-memory=4G --stream=tar --safe-slave-backup /tmp/mysql |ssh root@目标IP cat ">" /root/backup.tar

解压备份文件解压:tar -ixvf backup.tar -C backup/

中途遇到的坑:

源数据库中设置了binlog-do-db,导致部分数据库的操作没有完全写入binlog(进而导致迁移时丢失部分数据)。

B、数据准备:

关闭数据库,service mysqld stop(我使用的是centos7,命令行工具已经包含有mysql_safe的功能)。

清空之前数据库的数据文件:即my.cnf下的datadir对应的文件夹下的内容清空。

innobackupex --defaults-file=/etc/my.cnf --user=username --password=password --apply-log backup/

C、数据恢复:

innobackupex --defaults-file=/etc/my.cnf --user=username --password=password --copy-back backup/

修改数据权限:chown -R mysql.mysql 数据文件

D、启动数据库:

service mysqld start

遇到的问题:

由于我是由低版本往高版本升级,需要对新的数据库做update操作:mysql_upgrade -uusername -ppassword

更新完成后,需要对数据进行restart,否则远程客户端连接会有问题。

E、添加主从,同步数据迁移后更新的数据:

1、查看数据拷贝时的文件pos:(如果库中只使用了innodb引擎,恢复的时候使用xtrabackup_binlog_pos_innodb文件确定pos信息;如果还有其他引擎(如MyISAM),恢复的时候使用xtrabackup_binlog_info确定pos信息)。

2、关闭当前机器的slave服务:

stop slave;

3、设置新的从节数据库的文件更新pos:

master_user='slaveruser',master_password='slavePassword!',master_host='源数据库IP',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=154;

注意在此之前你必须先在源数据库中添加slaver账户。

4、启动从服务:

start slave;

5、观察数据同步进度并最终确认是否完全迁移。

show slave status;

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值