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)
    

      

      

  • 相关阅读:
    数据结构-向量
    可信执行环境(TEE)介绍 与应用
    ACM
    带哨兵节点和不带哨兵节点的单链表操作的对比
    java:Conllection(List,set,get,map,subList)使用
    java:在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作
    java:Conllection中的List,ArrayList添加元素,删除元素,输出元素
    java:类集框架conllection接口list,set
    java:投个票程序
    git:Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/12704264.html
Copyright © 2011-2022 走看看