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

    主从复制

    环境

    两台机器:

    主:[root@master ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 00:0c:29:f1:68:6c brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.17/24 brd 192.168.10.255 scope global noprefixroute ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::27c:fe2e:4d0a:cad2/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    备:[root@save-1 ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 00:0c:29:cb:cf:38 brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.18/24 brd 192.168.10.255 scope global noprefixroute ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fecb:cf38/64 scope link 
           valid_lft forever preferred_lft forever
    

    两台数据库执行以下sql语句

    mysql> create database test;
    mysql>  use test;
    Database changed
    mysql> create table emp (empno numeric(4) not null,ename varchar(10),job varchar(9),mgr numeric(4),hiredate datetime,sal numeric(7, 2),comm numeric(7, 2),deptno numeric(2));
    Query OK, 0 rows affected (0.11 sec)
    
    mysql>  select * from emp;
    

     修改主节点上配置文件并重启

    [root@master ~]# cat /etc/my.cnf 
    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/usr/local/mysql/mysql.sock
    symbolic-links=0
    log-bin=mysql-bin-master #启用二进制日志
    server-id=1	#本机数据库ID 标示
    binlog-do-db=test	#可以被从服务器复制的库, 二进制需要同步的数据库名
    binlog-ignore-db=mysql  #不可以被从服务器复制的库
     
    [mysqld_safe]
    log-error=/usr/local/mysql/logs/error.log
    pid-file=/usr/local/mysql/mysql.pid
     
    [client]
    socket=/usr/local/mysql/mysql.sock
    
    
    [root@master ~]# /etc/init.d/mysqld restart   重启
    Shutting down MySQL.. SUCCESS! 
    Starting MySQL.. SUCCESS! 
    

      创建用户并刷新授权表

    mysql>  grant replication slave on *.* to slave@192.168.19.75 identified by "123456";   用户创建错了
    Query OK, 0 rows affected, 1 warning (0.02 sec)
     
    mysql> grant replication slave on *.* to slave@192.168.10.18 identified by "123456";
    Query OK, 0 rows affected, 1 warning (0.12 sec)
    
    mysql> drop user slave@192.168.19.75 ;   删除错的用户
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> select * from mysql.user where user='slave'G;
    *************************** 1. row ***************************
                      Host: 192.168.10.18
                      User: slave
               Select_priv: N
               Insert_priv: N
               Update_priv: N
               Delete_priv: N
               Create_priv: N
                 Drop_priv: N
               Reload_priv: N
             Shutdown_priv: N
              Process_priv: N
                 File_priv: N
                Grant_priv: N
           References_priv: N
                Index_priv: N
                Alter_priv: N
              Show_db_priv: N
                Super_priv: N
     Create_tmp_table_priv: N
          Lock_tables_priv: N
              Execute_priv: N
           Repl_slave_priv: Y
          Repl_client_priv: N
          Create_view_priv: N
            Show_view_priv: N
       Create_routine_priv: N
        Alter_routine_priv: N
          Create_user_priv: N
                Event_priv: N
              Trigger_priv: N
    Create_tablespace_priv: N
                  ssl_type: 
                ssl_cipher: 
               x509_issuer: 
              x509_subject: 
             max_questions: 0
               max_updates: 0
           max_connections: 0
      max_user_connections: 0
                    plugin: mysql_native_password
     authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
          password_expired: N
     password_last_changed: 2020-04-15 10:07:09
         password_lifetime: NULL
            account_locked: N
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    mysql> flush privileges;   刷新用户授权表
    Query OK, 0 rows affected (0.01 sec)
    

      从库修改配置文件并重启

    [root@save-1 ~]# cat /etc/my.cnf
    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/usr/local/mysql/mysql.sock
    symbolic-links=0
    server-id=2    #添加server-id
     
    [mysqld_safe]
    log-error=/usr/local/mysql/logs/error.log
    pid-file=/usr/local/mysql/mysql.pid
     
    [client]
    socket=/usr/local/mysql/mysql.sock
    [root@save-1 ~]# /etc/init.d/mysqld restart 
    Shutting down MySQL.... SUCCESS! 
    Starting MySQL.. SUCCESS!
    

      在从从主机测试主上新建的账户

    [root@save-1 ~]# mysql -uslave -h192.168.10.17 -p123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 4
    Server version: 5.7.18-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
     
    mysql> quit
    Bye
    

      主节点查看binlog 日志号

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

      从节点设置连接主节点并开启主从复制

    mysql> change master to  master_host='192.168.10.17',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000001',master_log_pos=1359;
    Query OK, 0 rows affected, 2 warnings (0.08 sec)
    mysql> start slave;
    Query OK, 0 rows affected (0.33 sec)
    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.10.17
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin-master.000001
              Read_Master_Log_Pos: 1359
                   Relay_Log_File: save-1-relay-bin.000002
                    Relay_Log_Pos: 327
            Relay_Master_Log_File: mysql-bin-master.000001
                 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: 1359
                  Relay_Log_Space: 535
                  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
                      Master_UUID: 88976e86-7d66-11ea-967b-000c29f1686c
                 Master_Info_File: /usr/local/mysql/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)
    

      主节点查看

    mysql> show processlist G
    *************************** 1. row ***************************
         Id: 3
       User: root
       Host: localhost
         db: NULL
    Command: Query
       Time: 0
      State: starting
       Info: show processlist
    *************************** 2. row ***************************
         Id: 5
       User: slave
       Host: 192.168.10.18:51098
         db: NULL
    Command: Sleep
       Time: 3353
      State: 
       Info: NULL
    *************************** 3. row ***************************
         Id: 6
       User: slave
       Host: 192.168.10.18:51100
         db: NULL
    Command: Binlog Dump
       Time: 119
      State: Master has sent all binlog to slave; waiting for more updates
       Info: NULL
    3 rows in set (0.00 sec)
    

      主节点插入数据测试

    mysql> insert into test.emp values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);
    Query OK, 1 row affected (0.01 sec)
    

      从节点查看

    mysql> select * from emp;
    +-------+-------+----------+------+---------------------+---------+--------+--------+
    | empno | ename | job      | mgr  | hiredate            | sal     | comm   | deptno |
    +-------+-------+----------+------+---------------------+---------+--------+--------+
    |  7369 | SMITH | CLERK    | 7902 | 1980-12-17 00:00:00 |  800.00 |   NULL |     20 |
    |  7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 |     30 |
    +-------+-------+----------+------+---------------------+---------+--------+--------+
    2 rows in set (0.00 sec)
    

      

      

  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/12704264.html
Copyright © 2011-2022 走看看