GRANT REPLICATION SLAVE ON *.* TO 'root'@'10.10.243.179' IDENTIFIED BY '123';php
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY '123';html
MySQL主從複製配置
Mysql的主從複製至少是須要兩個Mysql的服務,固然Mysql的服務是能夠分佈在不一樣的服務器上,也能夠在一臺服務器上啓動多個服務。mysql
(1)首先確保主從服務器上的Mysql版本相同ios
(2)在主服務器上,設置一個從數據庫的帳戶,使用REPLICATION SLAVE賦予權限,如:sql
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BYshell
'123456';數據庫
Query OK, 0 rows affected (0.13 sec)安全
(3)修改主數據庫的配置文件my.cnf,開啓BINLOG,並設置server-id的值,修改以後必須重啓Mysql服務服務器
[mysqld]網絡
log-bin = /home/mysql/log/mysql-bin.log
server-id=1
(4)以後能夠獲得主服務器當前二進制日誌名和偏移量,這個操做的目的是爲了在從數據庫啓動後,從這個點開始進行數據的恢復
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 243
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
(5)好了,如今能夠中止主數據的的更新操做,並生成主數據庫的備份,咱們能夠經過mysqldump處處數據到從數據庫,固然了,你也能夠直接用cp命令將數據文件複製到從數據庫去
注意在導出數據以前先對主數據庫進行READ LOCK,以保證數據的一致性
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.19 sec)
以後是mysqldump
mysqldump -h127.0.0.1 -p3306 -uroot -p test > /home/chenyz/test.sql
最好在主數據庫備份完畢,恢復寫操做
mysql> unlock tables;
Query OK, 0 rows affected (0.28 sec)
(6)將剛纔主數據備份的test.sql複製到從數據庫,進行導入
(7)接着修改從數據庫的my.cnf,增長server-id參數,指定複製使用的用戶,主數據庫服務器的ip,端口以及開始執行復制日誌的文件和位置
[mysqld]
server-id=2
log_bin = /var/log/mysql/mysql-bin.log
master-host =192.168.1.100
master-user=test
master-pass=123456
master-port =3306
master-connect-retry=60
replicate-do-db =test
(8)在從服務器上,啓動slave進程
mysql> start slave;
(9)在從服務器進行show salve status驗證
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: mysql-bin.003
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.003
Relay_Log_Pos: 548
Relay_Master_Log_File: mysql-bin .003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(10)好了,如今能夠在咱們的主服務器作一些更新的操做,而後在從服務器查看是否已經更新
mysql主從複製(超簡單) - 系統網絡運維 - 51CTO技術博客
mysql主從複製(超簡單)
2012-02-27 15:31:02
原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。 http://369369.blog.51cto.com/319630/790921
mysql主從複製
(超簡單)怎麼安裝mysql數據庫,這裏不說了,只說它的主從複製,步驟以下:
一、主從服務器分別做如下操做:
1.一、版本一致
1.二、初始化表,並在後臺啓動mysql
1.三、修改root的密碼
二、修改主服務器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=222 //[必須]服務器惟一ID,默認是1,通常取IP最後一段
三、修改從服務器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=226 //[必須]服務器惟一ID,默認是1,通常取IP最後一段
四、重啓兩臺服務器的mysql
/etc/init.d/mysql restart
五、在主服務器上創建賬戶並受權slave:
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //通常不用root賬號,「%」表示全部客戶端均可能連,只要賬號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,增強安全。
六、登陸主服務器的mysql,查詢master的狀態
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:執行完此步驟後不要再操做主服務器MYSQL,防止主服務器狀態值變化
七、配置從服務器Slave:
mysql>change master to aster_host='192.168.145.222',master_user='tb',master_password='q123456',
master_log_file='mysql-bin.,000004',master_log_pos=308; //注意不要斷開,「308」無單引號。
Mysql>start slave; //啓動從服務器複製功能
八、檢查從服務器複製功能狀態:
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,創建數據庫,並在這個庫中建表插入一條數據:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
從服務器Mysql查詢:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db | //I'M here,你們看到了吧
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb; //能夠看到在主服務器上新增的具體數據
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
十、完成:
編寫一shell腳本,用nagios監控slave的兩個「yes」,如發現只有一個或零個「yes」,就代表主從有問題了,發短信警報吧。本文出自 「系統網絡運維」 博客,請務必保留此出處http://369369.blog.51cto.com/319630/790921