• 记录一下mariadb设置主从同步的过程[虚拟机测试]


    背景:因为工作的关系,需要找寻实时同步数据到另外系统的服务器的数据库上,查询下来,用mariadb进行跨服务器的同步数据动作,用主从同步比较多,也比较保险

    也有使用shell脚本的,定时定候的执行mysqldump的shell脚本,但是如果crontab坏掉了,或是被取消,甚至时间被更改,数据库被改动密码等等,就需要做更多的异动,

    但是shell脚本还是on the table的,可以深刻的考虑一下。

    下面呢,就开始这次主从同步的设置经验。

    前置准备:

    先要将需要同步的表格数据利用mysqldump做一个同步,再进行接下来的主从同步是能够保证新增的users能够实时的跑到另外一个服务器上去

    同步命令:

    (主)==> 导出数据: 

    mysqldump -uroot -pPassword database table > 1.sql
    

      

    (从)==> 导入数据:

    mysql -uroot -pPassword  database < 1.sql
    

      

    一、机器简介

    主:192.168,60,130

    从:192.168.60.129

    OS版本:CentOS 7.4 

    mariaDB版本:5.5

    二、配置主服务器

    1)修改主服务器的mariadb配置文件

    打开mariadb的配置文件/etc/my.cnf,在[mysqld]节点下添加如下的内容:

    #表示主服务器
    server-id = 1
    #记录日志
    log-bin=mysql-bin01  
    #提供数据同步服务的数据库,在此数据库下的数据可同步到从服务器中  
    binlog-do-db=#这里需要备份什么数据库就写什么数据库的名称
    #设置在主服务器上不记录日志的数据库  
    binlog-ignore-db=mysql   
    #日志过期时间  
    expire_logs_days=10  
    

      

    注意: 如果配置文件已经存在了上述的项目,覆盖原有的即可

    这里需要重启一下主服务器的数据库 ==> systemctl restart mariadb,要不然配置文件的修改不生效,无法继续下面的操作

    2)查看主服务器的状态

    此步骤要打开数据库命令行,输入命令:

    MariaDB [mysql]> show master status;
    +--------------------+----------+--------------+------------------+
    | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +--------------------+----------+--------------+------------------+
    | mysql-bin01.000004 |      1243 | tcloud       | mysql            |
    +--------------------+----------+--------------+------------------+
    

    这部分需要记住File和Position的值,到之后的配置需要使用

    3)查看log_bin的状态

    数据库命令行中,输入命令:

    MariaDB [mysql]> show variables like "%log_bin%";
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin                         | ON    |
    | log_bin_trust_function_creators | OFF   |
    | sql_log_bin                     | ON    |
    +---------------------------------+-------+
    

      

    此部分如果log_bin是ON,即表示正常开启。

    4)创建主服务器用户及权限(专门为从服务器连接创建一个用户,和分配一个权限)

    MariaDB [mysql] > grant replication slave on *.* to 'mysql'@'192.168.60.129' identified by '123456';
    
    #解释:
    
    这里是创建了一个mysql的用户,密码为123456,连接本机的数据库地址为从服务器的IP,即只允许该用户拥有从服务器的IP访问数据库并备份表的权限
    

      

    这里还要注意一点:replication 属于grant权限,后面只能用*.*,不能指定某个数据库或者某个数据表,如果指定类似select等普通权限可具体到数据表。

    5) 重启主服务器的mariadb

    三、配置从服务器

    1) 修改配置文件

    打开配置文件/etc/my.cnf,在[mysqld]节点下增加如下内容:

    #表示从服务器  
    server-id=2  
    #记录日志  
    log-bin=mysql-bin02  
    #同步的数据库   
    replicate-do-db=#要同步的数据库
    #同步的数据库指定表   
    replicate-do-db=#要同步的表  
    #不记录日志的数据库  
    replicate-ignore-db=mysql  
    #日志过期时间  
    expire_logs_days=10  
    

      

    2) 打开命令行,执行一下命令,来设置master信息

    change master to  
    master_host='192.168.60.130',#主服务器地址  
    master_user='mysql',#主服务器数据库用户名  
    master_password='123456',#主服务器数据库密码  
    master_log_file='mysql-bin01.000004',  #填写步骤2(2)中File项的值  
    master_log_pos=1243; #填写步骤2(2)中Position的值  
    

      

    3) 重启从服务器mariadb

    4) 执行启动从服务器命令(在从服务器数据库命令行进行)

    MariaDB [mysql] > start slave;
    

      

    5) 查看slave的运行状态命令

    MariaDB [mysql] > start slave;
    

      

    查看User值为system user的项,如果其State值为“Waiting for master to send event”和”Slave has read all relay log: waiting for the slave I/O thread to update it“,则从服务器已连接主服务器。

    6) 查看slave运行状态

    MariaDB [mysql] > show slave status;  
    

      

    如果Slave_IO_Running的值为Yes,Slave_SQL_Running的值为Yes,则从服务器正常运行。如果不正确,查看错误日志,一般位于data目录下。

    四、测试

    从服务器数据库中新建数据库pension,主服务器中新建表并插入数据,查看从服务器数据库,是否存在相同的数据库表及数据。

    PS: 

    如果以上的修改没有正常,并且在中间出现的配置文件配置的问题,则需要先在从服务器的mariadb命令行里先stop slave,然后再修改其他的问题

    修改完成后,去查看一下主服务器的状态是否已经改变 show master status(重点关注File和Position参数)

    如果改变了要重新记下来,然后在slave的服务器上再次执行change master to .... ==> start slave (这样的过程)

  • 相关阅读:
    CDN内容交付网络学习
    mysql高可用架构了解
    coredump了解
    NTP协议了解
    mysql主从复制学习
    Go中json的marshal解析
    go基础系列~基础环境相关
    leetcode(c++)(背包问题)
    arcsin是反正弦。
    设计模式的六大原则。简称:SOLID
  • 原文地址:https://www.cnblogs.com/frankielf0921/p/9114578.html
Copyright © 2020-2023  润新知