mysql主從伺服器搭建

來源:互聯網
上載者:User

標籤:mysql   伺服器   資料庫   用戶端   identified   

  當業務流量過大時,我們的一台伺服器可能難以負載,我們需要用到主從伺服器的配置。

具體配置如下:

172.17.10.57位主伺服器

172.17.55.206 從伺服器

正確的安裝資料庫後,確保兩台的能互連。


   mysql>GRANT REPLICATION SLAVE ON *.* to ‘mysync‘@‘%‘ identified by ‘q123456‘;

//一般不用root帳號,“%”表示所有用戶端都可能連,只要帳號,密碼正確,此處可用具體用戶端IP代替,如192.168.145.226,加強安全

 先進行測試,看是否能正確的串連。對資料的許可權管理也要清楚的瞭解。


主伺服器配置如下:

在/etc/my.cn

#vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必須]啟用二進位日誌
       server-id=222       //[必須]伺服器唯一ID,預設是1,一般取IP最後一段


3、修改從伺服器slave:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必須]啟用二進位日誌
       server-id=226       //[必須]伺服器唯一ID,預設是1,一般取IP最後一段



4、重啟兩台伺服器的mysql
   /etc/init.d/mysql restart


5 查看狀態

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



6 從伺服器串連主伺服器


mysql> change master to master_host=‘172.17.10.57‘,     -> master_user=‘test‘,     -> master_password=‘passwd‘,     -> master_log_file=‘mysql-bin.000006‘; mysql> start slave   mysql> show slave status\G;

mysql> change master to master_host = ‘172.17.10.57‘,master_user = ‘mysync‘,master_password=‘q123456‘,master_log_file=‘mysql-bin.000019‘,master_log_pos=120;



8、檢查從伺服器複製功能狀態:

   mysql> show slave status\G

   *************************** 1. row ***************************

                Slave_IO_State: Waiting for master to send event

                   Master_Host: 192.168.2.222  //主伺服器地址

                   Master_User: myrync         //授權帳戶名稱,盡量避免使用root

                   Master_Port: 3306           //資料庫連接埠,部分版本沒有此行

                 Connect_Retry: 60

               Master_Log_File: mysql-bin.000004

           Read_Master_Log_Pos: 600        //#同步讀取二進位日誌的位置,大於等於>=Exec_Master_Log_Pos

                Relay_Log_File: ddte-relay-bin.000003

                 Relay_Log_Pos: 251

         Relay_Master_Log_File: mysql-bin.000004

              Slave_IO_Running: Yes       //此狀態必須YES

             Slave_SQL_Running: Yes       //此狀態必須YES
                    ......

註:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

以上操作過程,主從伺服器配置完成。




如果出現錯誤記得來這裡找
mysql 互為主從複製常見問題

來源: 發表於:2012-08-19 17:15   點擊:

報錯: 1) change master導致的: Last_IO_Error: error connecting to master - retry-time: 60 retries 2) 在沒有解鎖的情況下停止slave進程: stop slave; ERROR 1192 (HY000): Cant execute the given command because you have active locked tables

         


報錯:
1)
change master導致的:
              Last_IO_Error: error connecting to master  - retry-time: 60  retries

2)    
在沒有解鎖的情況下停止slave進程:
     > stop slave;
ERROR 1192 (HY000): Can‘t execute the given command because you have active locked tables or an active transaction

3)
change master語法錯誤,落下逗號
mysql> change master to
    -> master_host=‘IP‘
    -> master_user=‘USER‘,
    -> master_password=‘PASSWD‘,
    -> master_log_file=‘mysql-bin.000002‘,
    -> master_log_pos=106;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘master_user=‘USER‘,
master_password=‘PASSWD‘,
master_log_file=‘mysql-bin.000002‘ at line 3

 

4)
在沒有停止slave進程的情況下change master
mysql> change master to master_host=‘IP‘, master_user=‘USER‘, master_password=‘PASSWD‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=106;
ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first

 

5)
A B的server-id相同:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
these ids must be different for replication to work (or the --replicate-same-server-id option must be used on
slave but this does not always make sense; please check the manual before using it).
查看server-id
mysql> show variables like ‘server_id‘;
手動修改server-id
mysql> set global server_id=2; #此處的數值和my.cnf裡設定的一樣就行
mysql> slave start;

6)change master之後,查看slave的狀態,發現slave_IO_running 為NO
需要注意的是,做完上述操作之後最後重啟mysql進程。





















mysql主從伺服器搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.