資料庫的主從復制
❶ mysql主從復制,是從庫是拉還是推
mysql的主從復制開啟之後,從資料庫會立馬復制主資料庫中的數據。 然後,對主資料庫進行增,刪,改操作之後,從資料庫也會進行相同的操作。 不過,對從資料庫進行增,刪,改操作的話,對主資料庫是沒有任何影響的
❷ mysql的主從復制會同步mysql資料庫嗎
mysql的主從復制開啟之後,從資料庫會立馬復制主資料庫中的數據。
然後,對主資料庫進行增,刪,改操作之後,從資料庫也會進行相同的操作。
不過,對從資料庫進行增,刪,改操作的話,對主資料庫是沒有任何影響的
❸ 如何添加新資料庫到MySQL主從復制列表
具體操作如下:
1. 從服務上,停掉slave資料庫。
stop slave;
2. 主伺服器上,導出新資料庫。
mysqlmp --master-data --single-transaction -R --databases newdb > newdb.sql
3. 主伺服器上,修改my.cnf文件,添加新庫到binlog-do-db參數,重啟mysql。
4. 在導出的newdb.sql裡面查找當前的日誌文件以及位置(change master to …)
然後讓slave伺服器執行到這個位置。
start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;
其中MASTER_LOG_FILE以及MASTER_LOG_POS在導出的資料庫newdb.sql頂部位置查找。
4. 導入新庫到從伺服器上。
mysql < newdb.sql
5. start slave
其中比較重要的是在主伺服器上導出新庫時的日誌位置(position A),這個點很重要,以這個點做為分界線,導入新庫。
這種方法也同樣適用於某個資料庫或者某個數據表不同步的情況,比如主從資料庫有一個表由於某些原因數據不一致,那麼上面的方法只需要去掉重啟資料庫一步,其他的操作基本
❹ 如何在一台windows主機上實現MySQL的主從復制
1、首先要在本地建立兩個mysql服務,指定不同的埠。我這里一個主(3306),一個從(3307)。
2、然後修改主配置文件:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的資料庫
#binlog-ignore-db=mysql #不同步的資料庫,如果指定了binlog-do-db這里應該可以不用指定的
log-bin=mysql-bin #要生成的二進制日記文件名稱
修改從配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
3、在主庫添加一個用戶 repl 並指定replication許可權
create user 'repl'@'127.0.0.1' identified by 'asdf';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; -- --這里我指定資料庫(test.*)時報錯,而指定全庫(*.*)時會成功。
4、保持主從mysql的test資料庫初始狀態一致。
一般是先將所有的表加讀鎖,然後磁碟上的資料庫文件夾。我這里直接停止服務,然後將數據文件拷貝過去。
5、在主資料庫裡面運行show master status;記下file和position欄位對應的參數。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
6、在從庫設置它的master:
mysql> change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='asdf',master_log_file='mysql-bin.000001',master_log_pos=107;
Query OK, 0 rows affected (0.19 sec)
這里的master_log_file和master_log_pos對應剛才show master status記下的參數。
7、在從庫開啟從資料庫復制功能。
slave start;
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
在從庫可以通過show slave status來查看一些參數。
8. 此時在主庫創建表或插入數據,在從庫就會很快也能看到了。
-- 主庫
mysql> create table tianyc_02(b int);
Query OK, 0 rows affected (0.16 sec)
mysql> insert into tianyc_02 values(2013);
Query OK, 1 row affected (0.13 sec)
-- 從庫
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tianyc_01 |
| tianyc_02 |
+----------------+
2 rows in set (0.00 sec)
mysql> select * from tianyc_02;
+------+
| b |
+------+
| 2013 |
+------+
1 row in set (0.00 sec)同理,可以搭建第二、第三個從節點。
❺ MySQL的主從復制原理以及流程
原理:master將資料庫的改變寫入二進制日誌,slave同步這些二進制日誌,並根據這些二進制日誌進行數據重演操作,實現數據非同步同步。流程:1. slave端的IO線程發送請求給master端的binlog mp線程2. master端binlog mp線程獲取二進制日誌信息(文件名和位置信息)發送給slave端的IO線程3. salve端IO線程獲取到的內容依次寫到slave端relay log里,並把master端的bin-log文件名和位置記錄到master.info里4. salve端的SQL線程,檢測到relay log中內容更新,就會解析relay log里更新的內容,並執行這些操作,從而達到和master數據一致原理和流程就是這樣了,如果在工作中遇到了,希望幫到你,還有不明白的,可以在網上多搜一下這方面的知識,我這些知識都是在黑馬程序員社區看到的,你也可以去看看有沒有想了解的。
❻ Mysql 的主從復制,最多支持多少個資料庫同步
主從復制理論上支持無窮大的從庫個數,實際情況下,受伺服器帶寬和讀寫能力的影響
請參考MySQL官方手冊的建議:
理論上,通過使用單個主伺服器/多從伺服器設置,可以通過添加更多的從伺服器來擴充系統,直到用完網路帶寬,或者你的更新負載已經增長到主伺服器不能處理的點。
在獲得的收益開始吃平之前,為了確定可以有多少從伺服器,以及可以將你的站點的性能提高多少,需要知道查詢模式,並且要通過基準測試並根據經驗確定一個典型的主伺服器和從伺服器中的讀取(每秒鍾讀取量,或者max_reads)吞吐量和寫(max_writes)吞吐量的關系。通過一個假設的帶有復制的系統,本例給出了一個非常簡單的計算結果。
假設系統負載包括10%的寫和90%的讀取,並且我們通過基準測試確定max_reads是1200 –2 × max_writes。換句話說,如果沒有寫操作,系統每秒可以進行1,200次讀取操作,平均寫操作是平均讀操作所用時間的兩倍,並且關系是線性的。我們假定主伺服器和每個從伺服器具有相同的性能,並且我們有一個主伺服器和N個從伺服器。那麼,對於每個伺服器(主伺服器或從伺服器),我們有:
reads = 1200 – 2 × writes
reads = 9 × writes / (N + 1) (讀取是分離的, 但是寫入所有伺服器)
9 × writes / (N + 1) + 2 × writes = 1200
writes = 1200 / (2 + 9/(N+1))
最後的等式表明了N個從伺服器的最大寫操作數,假設最大可能的讀取速率是每分鍾1,200次,讀操作與寫操作的比率是9。
如上分析可以得到下面的結論:
· 如果N = 0(這表明沒有復制),系統每秒可以處理大約1200/11 = 109個寫操作。
· 如果N = 1,每秒得到184個寫操作。
· 如果N = 8,每秒得到400個寫操作。
· 如果N = 17,每秒得到480個寫操作。
❼ mysql主從復制是什麼概念什麼場合用最好舉例說明。
主從復制,是用來建立一個和主資料庫完全一樣的資料庫環境,稱為從資料庫;主資料庫一般是實時的業務資料庫
❽ 怎樣解決MySQL資料庫主從復制延遲的問題
在主伺服器上建立一個為從伺服器進行復制使用的用戶。該賬戶必須授予 REPLICATION SLAVE 許可權,由於僅僅是進行復制使用所以不需要再授予任何其它許可權。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'192.168.0.2' IDENTIFIED BY 'slavepasswd';
mysql> FLUSH PRIVILEGES;
3、編輯主伺服器的配置文件:/etc/my.cnf的[ mysqld ] 部分:
server-id = 本機資料庫 ID 標示,該部分還應有一個server-id=Master_id選項,其中master_id必須為1到232之間的一個正整數值
log-bin = 二進制日誌的位置和名稱
binlog-do-db = 需要備份的資料庫名,如果備份多個資料庫,重復設置這個選項即可
binlog-ignore-db = 不需要備份的資料庫苦命,如果備份多個資料庫,重復設置這個選項即可
❾ 下面關於資料庫主從復制機制的原理概述,哪個是錯誤的
主庫的主機關機時,數據只能讀不能寫,並且從庫的主機關機後,數據仍然可讀可寫,這個不好弄,如果你對lua腳本有所了解,修改mysql-proxy 的讀寫分離腳本或許可以實現。 不過主庫關機時不能訪問,並且從庫關機仍可讀可寫,這個不需要配讀寫分離,這本來就是主從復制的基本能力,從庫只是備用的而已。從庫關閉後再開啟,slave IO線程會自動從中斷處二進制日誌的位置開始復制主機的二進制日誌,slave SQL線程會讀取並執行這些二進制日誌中的SQL。 總之,不需要特別的配置,這是主從復制的基本能力。
❿ mysql的讀寫分離和主從復制的區別在哪裡
讀寫分離的意思是,寫入的時候向 a 伺服器寫入,而讀出的時候從 b c d 甚至更多的伺服器讀出;這樣的架構適合於讀多寫少的應用,最典型的就是火車購票系統,一般我們買票的時候要先查詢好多次,包括車次啊,時間啊,這都是讀操作,而最後可能只買一張車票,這是寫操作;做了讀寫分離之後,可以將資源分配到最合理的地方,不會使某些資源閑置,而另一些資源不夠用;
但是讀寫分離必然引發主從復制,試想一共有 10 張票,買了 1 張票,讀的時候如果還是讀到 10 張余票就不對了,因此需要主從復制,再讀的時候,就只能讀到 9 張余票了;