美文网首页
Mysql数据库实现主从备份

Mysql数据库实现主从备份

作者: 忧郁的冥 | 来源:发表于2022-01-26 14:55 被阅读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
    

    相关文章

      网友评论

          本文标题:Mysql数据库实现主从备份

          本文链接:https://www.haomeiwen.com/subject/npvzsktx.html