数据库迁移杂谈(innobackupex mysql主备 mysql热备 mysql环境搭建)
1、mysql环境搭建
A、下载mysql对应RPM包:
cat /etc/redhat-release; // centos 7wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmyum install mysql57-community-release-el6-9.noarch.rpmyum repolist all | grep mysql;查看安装包;修改配置中的 enabled选项,安装mysql5.7,将mysql57-community中的enabled=0修改为enabled=1vim /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重做中继日志中的事件,将改变反映它自己的数据。
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='useame',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=useame --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=useame --password=password --apply-log backup/
C、数据恢复:
innobackupex --defaults-file=/etc/my.cnf --user=useame --password=password --copy-back backup/修改数据权限:chown -R mysql.mysql 数据文件
D、启动数据库:
service mysqld start遇到的问题:由于我是由低版本往高版本升级,需要对新的数据库做update操作:mysql_upgrade -uuseame -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;
参考资料:
作者:高兴的翅膀
来源链接:https://www.cnblogs.com/axwing/p/7453339.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。