zoukankan      html  css  js  c++  java
  • mysql主从复制

    1、介绍

           MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器(这篇博客暂时不涉及)。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。

    2、环境

    主:192.168.182.155 centos7.2   

    从:192.168.182.156 centos7.2   

    3、主从复制

    3.1、修改配置文件

    修改主从服务器的配置文件/etc/my.cnf,在mysqld中添加log-bin=mysql-bin开启二进制文件

    主服务配置:

    [root@localhost ~]# cat /etc/my.cnf
    #
    # This group is read both both by the client and the server
    # use it for options that affect everything
    #
    [client-server]
    
    #
    # This group is read by the server
    #
    [mysqld]
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    log-bin=mysql-bin

      server-id=1
      innodb_flush_log_at_trx_commit=1
      sync_binlog=1
      binlog_ignore_db=mysql

    
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d

    从服务器配置:

    [root@localhost ~]# cat /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    log-bin=mysql-bin

    server-id=2

    # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d

     3.2、开始构建主从复制

    在192.168.182.155中创建一个192.168.182.156主机中可以登录的MySQL用户

    登陆主数据库

    mysql  -uroot -pwc20080512;

    创建连接账号和密码

    MariaDB [(none)]> CREATE USER 'mysql12'@ '192.168.182.156' IDENTIFIED BY 'mysql12';

    授权

    MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'mysql12'@192.168.182.156 IDENTIFIED BY 'mysql12';
    Query OK, 0 rows affected (0.02 sec)

      MariaDB [(none)]> FLUSH PRIVILEGES;
      Query OK, 0 rows affected (0.02 sec)

    执行以下命令锁定数据库以防止写入数据

    MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
    Query OK, 0 rows affected (0.07 sec)

    退出mysql命令行,导出数据库

    mysqldump  -uroot -pwc20080512  -B heruiguo  wanghaixue > /opt/mysql.sql;

    scp 数据文件到从服务器

     scp /opt/mysql.sql  192.168.182.156:/opt

    登陆从服务器导入数据

    [root@localhost ~]# mysql -uroot -pwc20080512</opt/mysql.sql 

    编辑配置文件my.cnf,在[mysqld]下面加入:

    server-id=2

    重启数据库

    systemctl  restart  mariadb.service

    查看192.168.182.155 MySQL服务器二进制文件名与位置

    MariaDB [(none)]> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000010 | 327 | wordpress | mysql |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    解锁数据库

    MariaDB [(none)]> UNLOCK TABLES;
    Query OK, 0 rows affected (0.00 sec)

    在从服务器执行

    [root@localhost ~]# mysql   -uroot  -pwc20080512

    CHANGE MASTER TO
    MASTER_HOST='192.168.182.155',
    MASTER_USER='mysql12',
    MASTER_PASSWORD='mysql12',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000010',
    MASTER_LOG_POS=327;

     

    启动slave进程。

    MariaDB [(none)]> START SLAVE;
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    查看主从复制是否配置成功

    MariaDB [(none)]> SHOW SLAVE STATUSG  
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.182.155
                      Master_User: mysql12
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000010
              Read_Master_Log_Pos: 723
                   Relay_Log_File: mariadb-relay-bin.000002
                    Relay_Log_Pos: 929
            Relay_Master_Log_File: mysql-bin.000010
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 723
                  Relay_Log_Space: 1225
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
    1 row in set (0.00 sec)

    主从配置完成

    测试

    在主服务器上创建数据库

    MariaDB [heruiguo]> create  database  aaa;
    Query OK, 1 row affected (0.01 sec)
    
    MariaDB [heruiguo]> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000012 |      624 |              | mysql            |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    在从库上验证

    MariaDB [heruiguo]> show  databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | aaa                |
    | heruiguo           |
    | mysql              |
    | performance_schema |
    | wanghaixue         |
    +--------------------+
    6 rows in set (0.00 sec)
  • 相关阅读:
    RUST实践.md
    redis.md
    opencvrust.md
    aws rds can't connect to mysql server on 'xx'
    Foundation ActionScript 3.0 With Flash CS3 And Flex
    Foundation Flash Applications for Mobile Devices
    Flash Mobile Developing Android and iOS Applications
    Flash Game Development by Example
    Actionscript 3.0 迁移指南
    在SWT中非UI线程控制界面
  • 原文地址:https://www.cnblogs.com/heruiguo/p/8986354.html
Copyright © 2011-2022 走看看