• 技术文章 >数据库 >mysql教程

    Mysql Replication机制主从备份实践_MySQL

    2016-05-27 13:45:33原创343

    Mysql Replication机制主从备份实践

    参考资料:

    Install mysql:
    https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-ubuntu-14-04
    replication mysql:
    https://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

    (如果安装mysql过程中,有"media change: please insert the disc labeled",解决方案:sudo sed -i '/cdrom/d' /etc/apt/sources.list
    http://askubuntu.com/questions/386265/media-change-please-insert-the-disc-labeled-when-trying-to-install-ruby-on-ra)

    具体步骤:

    1.Install mysql on 2 server:

    apt-get install mysql-server


    2.Set binary log and server-id in /etc/mysql/my.cnf
    server1:
    [mysqld]
    log-bin=/var/log/mysql/mysql-bin.log
    server-id=1
    server2:
    [mysqld]
    log-bin=/var/log/mysql/mysql-bin.log
    server-id=2


    3.Using "mysql -u root -p" to connect to mysql, and run below command on slave sever2:
    mysql> CREATE USER repl@'%' IDENTIFIED BY 'slavepass';
    mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';


    4. Restart mysql on server1 and server2:
    service mysql stop
    service mysql start


    5. Run command on master server1:
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 | 106 | | |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)


    6.Creating a Data Snapshot Using mysqldump on master server1:
    shell> mysqldump -h 127.0.0.1 -u root -p 123456 --all-databases --master-data > dbdump.db
    BTW, if we have new master or slave need to create, we can use shell> mysql -h master < dbdump.db


    7.Setting the Master Configuration on the Slave server2:
    mysql> CHANGE MASTER TO
    -> MASTER_HOST='server1',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='slavepass',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=106;


    8.Unlock tables on master server1:
    mysql> UNLOCK TABLES;


    9.Grant all permission for root on master server1:
    >use mysql
    >GRANT ALL ON *.* to root@'%' IDENTIFIED BY '123456';
    >FLUSH PRIVILEGES;


    10.connect to master server1 on slave server2:
    mysql -h server1 -u root -p


    11.run below commands on slave server2:
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)

    mysql> SHOW SLAVE STATUS\G
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 10.185.98.24
    Master_User: repl
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000003
    Read_Master_Log_Pos: 825
    Relay_Log_File: mysqld-relay-bin.000004
    Relay_Log_Pos: 971
    Relay_Master_Log_File: mysql-bin.000003
    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: 825
    Relay_Log_Space: 1273
    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)

    mysql>

    12. Create a database on master:
    mysql> create database test;

    13. Check new database test sync to slave:
    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | test |
    +--------------------+
    4 rows in set (0.00 sec)

    mysql>
    BTW, if you want to check all users on master, use command:select User,Host from mysql.user;

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:主从 备份 机制
    上一篇:讲解Linux系统下如何自动备份MySQL数据的基本教程_MySQL 下一篇:MySQL中使用or、in与union all在查询命令下的效率对比_MySQL
    PHP编程就业班

    相关文章推荐

    • mysql中的不等于怎么表示• mysql嵌套查询语句是什么• mysql怎么给查询加序号• mysql怎么删除分区• 浅析MVCC中的快照,看看快照是怎么工作的?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网