Mysql数据库实现主从备份

2022-01-26  本文已影响0人  忧郁的冥

为测试主从备份效果使用CentOS7系统镜像的VM直接安装mysql以下为实操记录
CentOS7 VM使用:https://www.jianshu.com/p/cecf6cc04f46

一、安装mysql数据库

参考:https://www.jianshu.com/p/276d59cbc529

1.创建mysql用户和用户组

groupadd mysql      #添加用户组
useradd -r -g mysql mysql    #添加用户

2.下载安装包

cd /data
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3.解压安装包

tar -tzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql   #修改文件名
mkdir /data/mysql/data   #创建data目录

4.修改安装目录所属用户组及权限

chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql

5.安装并初始化

cd /data/mysql/bin
./mysqld --initialize --user=mysql --datadir=/data/mysql/data --basedir=/data/mysql

错误提示:

./mysqld: error while loading shared libraries:libaio.so.l:connot poen shared object file:No such file or directory

解决方案:

yum install  libaio-devel.x86_64   #缺少必要的数据库依赖,安装一下

[Tip]注意初始化日志结尾的随机初始密码 首次登陆需要用到 忘了也没事在下一步配置文件中添加skip-grant-tables 可以跳过密码验证(别问我怎么知道的-_-)

6.修改mysql配置文件

vi /etc/my.cnf

原有内容不知道干啥用的我全删了,替换成新的保存

[mysqld]
datadir=/data/mysql/data
basedir=/data/mysql
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1

7.启动

ln -s /data/mysql/support-files/mysql.server /etc/init.d/mysql  #添加软连接
service mysql start  
ps -ef|grep mysql  #不出意外应该显示mysql进程了
mysql>mysql -uroot  #登录mysql 如果添加了跳过验证就不需要输入密码了 不然加上(-p上述的初始密码)
mysql>use mysql;   #选择mysql数据库
mysql>update user set host='%' ,authentication_string = password("123456") where user='root'; #开启远程连接并修改密码
mysql>flush privileges;  #刷新配置进内存 否则需要重启起效

如果防火墙没有禁止3306端口的话现在应该可以用图形化管理工具远程登录数据库了

二、克隆虚拟机镜像

参考:https://jingyan.baidu.com/article/da1091fb4d625b027849d684.html

使用VM进行虚拟机克隆作为mysql备份数据库服务器,步骤简单参考上方百度百科。

三、进行主从配置

参考:https://www.cnblogs.com/jianmingyuan/p/10903682.html

测试环境:

A服务器(主服务器Master):192.168.216.127

B服务器(从服务器Slave):192.168.216.128

主从服务器的Mysql版本皆为5.5.24

[Tip]主从库都创建数据库test并创建一个用于测试的数据表,节省掉备份步骤。

1.主库开启二进制备份功能

1.1添加my.cnf配置内容并重启mysql

server-id = 1        //唯一id
log-bin=mysql-bin                 //其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
binlog-do-db = test     //记录日志的数据库
binlog-ignore-db = mysql    //不记录日志的数据库

1.2查询主库状态并记录 日志文件file,和当前位置position

2.主库增加同步账号,并开放repliction权限

mysql>grant replication slave on *.* to 'replicate'@'192.168.216.128' identified by '123456';  #创建同步用户replicate
mysql>flush privileges; 

4.从库设置主从同步

4.1添加my.cnf配置内容并重启mysql

server-id = 2
log-bin=mysql-bin
binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 30                           #binlog过期清理时间
max_binlog_size = 1000m                    #binlog每个日志文件大小
binlog_cache_size = 4m                        #binlog缓存大小
max_binlog_cache_size= 512m              #最大binlog缓存大
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema

4.2用change mster 语句指定同步位置

mysql>stop slave;          //先停止slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host='192.168.216.127',master_user='replicate',master_password='123456',
>master_log_file=' mysql-bin.000003 ',master_log_pos=154;
mysql>start slave;

4.3查询从库状态


如果Slave_IO_Running=Yes 且 Slave_SQL_Running=Yes则表示主从同步配置成功

若Slave_IO_Running=No 下面Last_IO_Error提示UUID冲突则是因为镜像拷贝导致的UUID重复
解决方案:

cd /data/mysql/data
rm -rf auto.cnf
上一篇下一篇

猜你喜欢

热点阅读