• MySQL++:Liunx


    目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制

    环境:虚拟机

      主数据库:192.168.211.101

      从数据库:192.168.211.102

    MySQL 安装可参考:逛一逛

    一):主库配置步骤

    1、配置主库:授权给从数据库服务器

    mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.211.102' identified by 'root';
    mysql>FLUSH PRIVILEGES;

    2、修改主库配置文件,开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效

    [mysqld]
    # 同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
    log-bin=mysql-bin
    # master端的ID号
    server-id=1
    # 要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名 
    binlog-do-db=verymemory
    # 要忽略的数据库
    #binlog-ignore-db=mysql

    修改完配置后:重启MySQL服务     如果启动失败,通过cat /var/log/mysqld.log | tail -30  查看mysql启动失败的日志,从日志内容寻找解决方案。

    3、查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000004 |      120 | verymemory   |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

    主服务器已配置好。

    二):从库配置步骤

    1、理所当然也是从配置文件着手,在/etc/my.cnf 添加下面配置:

    [mysqld]
    server-id=2
    master-host=192.168.211.101
    master-user=rep1
    master-password=root
    master-port=3306
    replicate-do-db=verymemory
    ......

    重启时报错:mysqld: unknown variable ‘master-host=

    说明mysql不认识这些变量,原因是mysql5.5+版本主从复制不支持这些变量,需要在从库上用命令来设置:

    CHANGE MASTER TO MASTER_HOST='192.168.211.101',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=120;

    注意可能存在的错误:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

    ------------------------  ERROR  START  ------------------------

    1、如果版本一样,请执行以下操作

    vim /etc/my.cnf
    
    #添加如下配置
    log-bin=mysql-bin
    server-id=2

    2、如果版本不一样,请执行以下操作

    原因:从 5.6.25 版本使用 innobackupex 备份,在 5.7.15 版本中应用恢复,ibd系统表需要重建

    解决步骤:

    1):drop 备份的 ibd表

    #登录数据库
    mysql -uroot -p
    #使用mysql数据库
    use mysql;
    #删除
    drop table slave_master_info;
    drop table slave_relay_log_info;
    drop table slave_worker_info;
    drop table innodb_index_stats;
    drop table innodb_table_stats;
    #重建
    source /app/mysql-5.7.25/share/mysql_system_tables.sql
    #退出mysql
    quit
    #重启mysql
    /etc/init.d/mysqld restart
    或者service mysqld restart
    注:这里根据自己的mysql路径进行修改即可

    至此,问题解决,登陆数据库,重新 change master to 即可!

    --------------- ERROR  END  -----------------

    2、启动slave进程

    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)

    3、查看slave的状态,如果下面两项值为YES,则表示配置正确:

    Slave_IO_Running: Yes
    
    Slave_SQL_Running: Yes

    从库正在等待主库更新数据。。。Waitin for master to send event...

    到此为止主库要有操作的话  就会同步到从库。

    三):同步主库已有数据到从库 【根据个人情况选择 是否要操作以下步骤】

    主库操作:

    1、停止主库的数据更新操作

    mysql>flush tables with read lock;

    2、新开终端,生成主数据库的备份(导出数据库)

    ./mysqldump -h127.0.0.1 -uroot -proot verymemory > /opt/mysql/install/backups/verymemory.sql

    3、将备份文件传到从库

    scp /opt/mysql/install/backups/verymemory.sql root@192.168.211.102:/opt/mysql/backups

    4、主库解锁

    mysql>unlock tables;

    从库操作:

    1、停止从库slave

    mysql>slave stop;

    2、新建数据库cmdb

    mysql> create database verymemory default charset utf8;

    3、导入数据

    [root@ops-dev ~]# mysql -uroot -ptest123 verymemory</opt/mysql/install/backups/verymemory.sql

    4、查看从库已有该数据库和数据

    此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。

    更多MySQL主从复制 相关机制将会在下篇文章持续更新...

  • 相关阅读:
    枚举类 --单例模式
    模板设计模式
    动态代理
    反射应用--修改属性值
    通过反射绕过泛型
    java反射
    网络编程练习
    TCP编程
    GUI 聊天界面
    UDP传输多线程
  • 原文地址:https://www.cnblogs.com/codingmode/p/12917916.html
Copyright © 2020-2023  润新知