• CentOS7配置Mysql热备份


    Mysql 的安装:

    本人习惯讲安装包放在 /usr/local/src/

    ①.[root@localhost ~]#cd /usr/local/src/

    ②.[root@localhostsrc]#wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

    ③.[root@localhostsrc]#rpm-ivh mysql57-community-release-el7-8.noarch.rpm

    ④.[root@localhost src]#  yum -y install mysql-server

    默认配置文件路径: 
    配置文件:/etc/my.cnf 
    日志文件:/var/log/var/log/mysqld.log 
    服务启动脚本:/usr/lib/systemd/system/mysqld.service 
    socket文件:/var/run/mysqld/mysqld.pid


    查看临时密码随机:注意:安装完mysql服务器登录密码是随机的,需要重置密码。

      [root@localhost ~]# grep "password" /var/log/mysqld.log

    现在就可以用这个密码进行登录了:mysql -uroot -p

    Mysql安装结束!

    开始今天的主菜:一台主服务器-一台备份服务器实现热备份:

    1. 首先保证两台服务器mysql版本一致,同时防火墙都对3306开放

    当前环境:

    A服务器 ip:192.168.200.11   准备作为主服务器master

    B服务器 ip: 192.168.200.20   用于备份的服务器slave

    一.在A服务器上操作
    1.创建专门用于备份的 用户(登录mysql之后执行)

    CREATE USER 'cp_user'@'192.168.10.130' IDENTIFIED WITH mysql_native_password BY 'master2018!';
    GRANT REPLICATION SLAVE ON *.* TO 'cp_user'@'192.168.200.20';
    

      

    (注意:这里的cp_user 和 master2018! 是一会儿备份服务器配置是需要用到的master服务器的用户名和密码,需要记下来)

    2.修改 MySQL配置文件: /etc/my.cnf

    datadir=/var/lib/mysql
    
    socket=/var/lib/mysql/mysql.sock
     
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    
    symbolic-links=0 
    
    log-error=/var/log/mysqld.log
    
    pid-file=/var/run/mysqld/mysqld.pid
    
     
    
    log-bin=mysql-bin
    
    binlog_format=mixed
    
    server-id=1 //服务器唯一性标识符,每台服务器配置必须保存不一样
    
     
    
    read-only=0  
    
    binlog-do-db=hello  //需要备份的那个数据库名叫 “hello”
    
    auto-increment-increment=2  //这里设置用来台服务器来做备份,按个人情况定
    
    auto-increment-offset=1 //表示这台服务器序号,从1开始,不超auto-increment-increment
    
    //配置完该数据库中插入第一个数据id=1,第二条数据id=3而不是2,避免的数据库集群中id冲突
    

      


     重新启动mysql服务!

    3.执行 mysql>show master statusG(看到下面信息)

    mysql-bin.000002和154这两个值需要记得后面有用(刚安装完的数据库可能是mysql-bin.000001

    查看master配置:

    注意:到这master已经配置完成了!加油,已经成功一半了

    下面配置备份服务:

    二.B服务器操作:(安装过程都一样这里不重复)

    1.修改MySQL /etc/my.cnf 文件:

    看最后六行配置。

    配置完保存修改,重新启动mysql服务!

    2.登录B服务器的mysql服务器:执行下面命令(配置同步的主服务器)

    CHANGE MASTER TO
    
           MASTER_HOST=‘192.168.200.11’, 
    
           MASTER_USER='cp_user', 
    
           MASTER_PASSWORD='master2018!', 
    
           MASTER_LOG_FILE='mysql-bin.000002', 
    
           MASTER_LOG_POS=154; 
    

      


      

    到这里就算是完成99%了,重启B服务器的MySQL服务:service mysql restart

    查看slave上备份线程的工作情况:

    Slave_IO_Running:Yes

    Slave_SQL_Running:Yes

    两个当中如果有一个不是yes都是有问题的,本人第一次运行时遇到了第一个是no,第二个是yes,经过检测是上一步骤中MASTER_LOG_POS=154 这个值没有和master上面获的的Position的值一致,重新执行B服务器的操作2,参数输入正确就行。

    IP不正确或者防火墙未对3306开发都可能导致错误。 

    My.cnf文件中的常见参数讲解

    server-id 必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环。

    replicate-do-db 可以指定需要复制的数据库。

    replicate-ignore-db 复制时需要排除的数据库, 我使用了,这个。 除开系统的几个数据库之外,所有的数据库都复制。

    relay_log 中继日志的名字。 前面说到了, 复制线程需要先把远程的变化拷贝到这个中继日志中, 在执行。

    log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。  就是双主互相备份,或者多主循环备份。如果只是一个master和一个备份服务器这个参数可以不要。

  • 相关阅读:
    Syntax error, insert "]" to complete MemberExpression XXX.js (Java Web Project 导入Jquery的文件后报错)
    Unicode 转换成 Ascii (把Unicode 中文字符串输入到文本中)
    Static控件响应鼠标事件
    在Window 7 64位操作系统上安装Oracle 10g 及 配置PLSQL Developer 8.0.4图解
    LPSTR LPCSTR LPWSTR LPCWSTR区别
    C++ Builder 全部API函数列表
    CPropertySheet标签页 实现各个CPropertyPage页面之间的切换
    C#中如何从字符串中提取数字
    如何用SQL统计某个字符在一个字符串中出现的次数
    MVC中--异常详细信息: System.ArgumentNullException: 值不能为 null。 参数名: value
  • 原文地址:https://www.cnblogs.com/pangguoming/p/9634711.html
Copyright © 2020-2023  润新知