mysql主從配置熱備份

【環境介紹】
    兩臺linux服務器(若是是一臺,要保證兩個mysql都能正常啓動),這裏以centos6.8版本爲例
    mysql,使用centos6.8默認的源中的數據庫(經過yum install mysql mysql-server -y安裝,5.1.73版本)
    保證兩臺服務器能相互通訊
【安裝步驟】
    一、安裝mysql數據庫
        yum install mysql mysql-server -y
    二、設置開機啓動
        chkconfig --levels 2345 mysqld on
    三、啓動mysql數據庫
        service mysqld start
    四、設置用戶名和密碼
        mysql_secure_installation
【主機配置】
    一、登陸數據庫
        進入mysql控制檯
            mysql -uroot -p
        建立數據庫
            mysql> create database testdb;
        受權用戶mysqlcopy只能從機這個IP訪問主服務器上面的數據庫,而且只具備數據庫備份的權限
            mysql> grant replication slave  on *.* to 'mysqlcopy'@'10.241.226.111' identified by 'admin' with grant option;
    二、導出主機的數據庫內容
        在導出以前能夠先進入MySQL控制檯執行下面命令
            數據庫只讀鎖定命令,防止導出數據庫的時候有數據寫入
            mysql> flush tables with read lock;
        執行導出命令
            mysql> mysqldump -u root -p testdb> /home/testdbbak.sql;
        解除鎖定
            mysql> unlock tables;
    三、配置mysql主服務器的my.cnf文件
        編輯配置文件,在[mysqld]部分添加下面內容(和[mysqld]挨着)
            vi /etc/my.cnf
            # 啓動MySQ二進制日誌系統,注意:若是原來的配置文件中已經有這一行,就不用再添加了。
            log_bin=mysql-bin
            # 須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行
            binlog-do-db=testdb
            # 不一樣步mysql系統數據庫  
            binlog-ignore-db=mysql
            # 設置服務器id,爲1表示主服務器,注意:若是原來的配置文件中已經有這一行,就不用再添加了。
            server_id = 1
            # 若是這一行已經存在,就不用添加這一行了
            socket =/var/lib/mysql/mysql.sock
            # 設置編碼
            character-set-server=utf8 
        重啓MySQL
            service mysqld restart
        進入mysql控制檯
            mysql -uroot -p
        查看主服務器,出現如下相似信息
            mysql> show master status;
            +------------------+----------+--------------+------------------+
            | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
            +------------------+----------+--------------+------------------+
            | mysql-bin.000001 |      106 | testdb       | mysql            |
            +------------------+----------+--------------+------------------+
        【注意】須要記錄file的值:mysql-bin.000001和position的值:106,後面會用到
【從機配置】
    一、登陸數據庫
        進入mysql控制檯
            mysql -uroot -p
        建立數據庫
            mysql> create database testdb;
        進入數據庫
            mysql> user testdb;
        導入備份文件到數據庫(若是是在兩臺不一樣的機器上,須要從主機把文件拷貝到從機上)
            mysql> source  /home/testdbbak.sql;
        測試在從服務器上登陸到主服務器
            mysql -u mysqlcopy-h10.241.226.110 -p
    二、配置mysql從服務器的my.cnf文件
        編輯配置文件,在[mysqld]部分添加下面內容(和[mysqld]挨着)
            vi /etc/my.cnf
            # 啓動MySQ二進制日誌系統,注意:若是原來的配置文件中已經有這一行,就不用再添加了。
            log_bin=mysql-bin
            replicate-do-db=testdb
            replicate-ignore-db=mysql
            read_only=1
            # 配置文件中已經有一行server-id=1,修改其值爲2,表示爲從數據庫
            server_id = 2
            # 若是這一行已經存在了,就不須要這一行了
            socket = /var/lib/mysql/mysql.sock
            # 設置編碼
            character-set-server=utf8
        重啓mysql
            service mysqld restart
        進入MySQL控制檯
            mysql -uroot -p
        中止slave同步進程
            slave stop;
        執行同步語句
            change master to master_host='192.168.1.155',master_user='mysqlcopy',master_password='admin',master_log_file='mysql-bin.000001',master_log_pos=106;
        開啓slave同步進程
            slave start;
        查看slave同步信息,部份內容以下:
            SHOW SLAVE STATUS\G
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
            | Slave_IO_State                   | Master_Host   | Master_User | Master_Port | Connect_Retry | Master_Log_File  | Read_Master_Log_Pos | Relay_Log_File          | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error |
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
            | Waiting for master to send event | 192.168.1.155 | mysqlcopy   |        3306 |            60 | mysql-bin.000001 |                 106 | mysqld-relay-bin.000002 |           251 | mysql-bin.000001      | Yes              | Yes               | testdb          | mysql               |                    |                        |                         |                             |          0 |            |            0 |                 106 |             407 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |
            +----------------------------------+---------------+-------------+-------------+---------------+------------------+---------------------+-------------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+
        【注意】查看Slave_IO_Running: Yes Slave_SQL_Running: Yes這兩個參數的值,若是都是yes說明配置成功
【主從服務器測試】
    一、進入MySQL主服務器
        進入主服務器MySQL控制檯
            mysql -uroot -p
        進入數據庫
            user testdb;
        建立test表
            CREATE TABLE test ( id int not null,name varchar2(30),gender varchar2(2));
    二、進入mysql從服務器
        進入MySQL控制檯
            mysql -uroot -p
        進入數據庫
            use testdb;
        顯示全部的表
            show tables;
        顯示和主服務器同樣的表,說明配置成功html

【問題】
一、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解:因爲mysql 默認的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系統老是去/tmp/mysql.sock查找,因此會報錯
爲mysql.sock增長軟鏈接(至關於windows中的快捷方式)。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sockmysql

【參考資料】
http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html
http://www.cnblogs.com/cchun/p/3712637.html
 linux

相關文章
相關標籤/搜索