mysql簡(jiǎn)單主從

? ? ? ? ? ? ?對(duì)于新手,不要馬上就下刀到服務(wù)器配置mysql數(shù)據(jù)庫(kù)主從復(fù)制,同步等等!首先,要了解mysql主從的原理,不然,你從網(wǎng)上cp人家的例子,錯(cuò)了,都不知哪里出問(wèn)題!這是我對(duì)沒(méi)接觸過(guò)mysql簡(jiǎn)單主從而在工作中就馬上要用到mysql主從的同學(xué)的忠告!

mysql簡(jiǎn)單主從有好幾種實(shí)施方案,如:什么同步,異步,什么半同步等等!

今天我們都不說(shuō)這些!我們就說(shuō)下簡(jiǎn)單原理,和簡(jiǎn)單實(shí)操!

注意事項(xiàng):

(1)主從數(shù)據(jù)庫(kù)在同步前,主從兩個(gè)數(shù)據(jù)庫(kù)必須完善相等(一模一樣)

(2)服務(wù)器的mysql版本必須相同或從服務(wù)器的稍微高些

別的注意事項(xiàng)這里不說(shuō),想了解更多的可以自己去了解或問(wèn)下我也行!


第一步:說(shuō)說(shuō)mysql簡(jiǎn)單主從原理

mysql主從復(fù)制原理

從庫(kù)生成兩個(gè)線(xiàn)程,一個(gè)I/O線(xiàn)程,一個(gè)SQL線(xiàn)程;

i/o線(xiàn)程去請(qǐng)求主庫(kù) 的binlog,并將得到的binlog日志寫(xiě)到relay log(中繼日志) 文件中;

主庫(kù)會(huì)生成一個(gè) log dump 線(xiàn)程,用來(lái)給從庫(kù) i/o線(xiàn)程傳binlog;

SQL 線(xiàn)程,會(huì)讀取relay log文件中的日志,并解析成具體操作,來(lái)實(shí)現(xiàn)主從的操作一致,而最終數(shù)據(jù)一致;

簡(jiǎn)單說(shuō):兩個(gè)人,只有一個(gè)去學(xué)校讀書(shū),一個(gè)待在家里,去讀書(shū)的那個(gè)把看到的,聽(tīng)到的,抄到的都寫(xiě)在練習(xí)本上,binlog就是這個(gè)練習(xí)本,在家那個(gè)呢就拿著練習(xí)本學(xué)習(xí),因?yàn)檫B個(gè)人都是在練習(xí)本上面學(xué)東西,所以一樣!道理就這樣!因?yàn)閙ysql的操作都會(huì)記錄在binlog里面,這個(gè)binlog是需要配置一下的!


第二步:配置mysql的主從配置

CentOS6.5 MySQL主從同步,MySQL版本5.6.21

主服務(wù)器:centos6.5 IP:192.168.1.101

從服務(wù)器:centos6.5 IP:192.168.1.102

一、主服務(wù)器相關(guān)配置

1、創(chuàng)建同步賬戶(hù)并指定服務(wù)器地址

[root@localhost ~]mysql -uroot -p

mysql>use mysql

mysql>grant replication slave on *.* to 'testuser'@'192.168.1.102' identified by '12345678';

mysql>flush privileges #刷新權(quán)限

授權(quán)用戶(hù)testuser只能從192.168.1.102這個(gè)地址訪(fǎng)問(wèn)主服務(wù)器192.168.1.101的數(shù)據(jù)庫(kù),并且只具有數(shù)據(jù)庫(kù)備份的權(quán)限

2、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下參數(shù),若文件中已經(jīng)存在,則不用添加

server-id=1

log-bin=mysql-bin? #啟動(dòng)MySQL二進(jìn)制日志系統(tǒng),

binlog-do-db=ourneeddb? #需要同步的數(shù)據(jù)庫(kù)

binlog-ignore-db=mysql? #不同步mysql系統(tǒng)數(shù)據(jù)庫(kù),若還有其它不想同步的,繼續(xù)添加

[root@localhost ~]/etc/init.d/mysqld restart #重啟服務(wù)

3、查看主服務(wù)器master狀態(tài)(注意File與Position項(xiàng),從服務(wù)器需要這兩項(xiàng)參數(shù))

mysql> show master status;

+------------------+----------+--------------+------------------+

| File? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000012 |? ? ? 120 | ourneeddb| mysql? ? ? ? ? ? |

+------------------+----------+--------------+------------------+

4、導(dǎo)出數(shù)據(jù)庫(kù)

導(dǎo)出數(shù)據(jù)庫(kù)之前先鎖定數(shù)據(jù)庫(kù)

flush tables with read lock;? ? #數(shù)據(jù)庫(kù)只讀鎖定命令,防止導(dǎo)出數(shù)據(jù)庫(kù)的時(shí)候有數(shù)據(jù)寫(xiě)入

unlock tables; #解除鎖定

導(dǎo)出數(shù)據(jù)庫(kù)結(jié)構(gòu)及數(shù)據(jù):mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

導(dǎo)出存儲(chǔ)過(guò)程及函數(shù) :mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

tips:-ntd導(dǎo)出存儲(chǔ)過(guò)程、-R導(dǎo)出函數(shù)

二、從服務(wù)器相關(guān)配置

1、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下參數(shù),若文件中已經(jīng)存在,則不用添加

server-id=2? #設(shè)置從服務(wù)器id,必須于主服務(wù)器不同

log-bin=mysql-bin? #啟動(dòng)MySQ二進(jìn)制日志系統(tǒng)

replicate-do-db=ourneeddb? #需要同步的數(shù)據(jù)庫(kù)名

replicate-ignore-db=mysql? #不同步mysql系統(tǒng)數(shù)據(jù)庫(kù)

[root@localhost~ ]/etc/init.d/mysqld restart #重啟服務(wù)

2、導(dǎo)入數(shù)據(jù)庫(kù)

導(dǎo)入過(guò)程這里不做闡述

3、配置主從同步

[root@localhost~ ]mysql -uroot -p

mysql>use mysql

mysql>stop slave;

mysql>change master to

master_host='192.168.1.101',

master_user='testuser',

master_password='12345678',

master_log_file='mysql-bin.000012',

master_log_pos=120;? #log_file與log_pos是主服務(wù)器master狀態(tài)下的File與Position

mysql>start slave;

mysql>show slave status\G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.101

Master_User: testuser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000012

Read_Master_Log_Pos: 120

Relay_Log_File: orange-2-relay-bin.000003

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000012

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: orange

Replicate_Ignore_DB: mysql,test,information_schema,performance_schema

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: 120

Relay_Log_Space: 1320

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

Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9

Master_Info_File: /home/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

注意查看Slave_IO_Running: Yes? Slave_SQL_Running: Yes這兩項(xiàng)必須為Yes 以及Log_File、Log_Pos要于master狀態(tài)下的File,Position相同

如果都是正確的,則說(shuō)明配置成功!


上面的操作,網(wǎng)上有不少!特別的那幾個(gè)主從配置參數(shù),不懂的話(huà),要百度下幾個(gè)參數(shù)都有什么作用!這樣學(xué)習(xí)起來(lái)就更明白了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、什么是Mysql主從復(fù)制 MySQL主從復(fù)制是其最重要的功能之一。主從復(fù)制是指一臺(tái)服務(wù)器充當(dāng)主數(shù)據(jù)庫(kù)服務(wù)器,另...
    人在碼途閱讀 2,963評(píng)論 0 23
  • 第十二次會(huì)議安排:(8月23日)主持人:王紅麗(48)時(shí)間大臣: 梁巍(41)記錄大臣:張麗琴(46) 分享順序:...
    孫玉麗閱讀 917評(píng)論 0 51
  • 1.感恩ruko分享文章,如何種出好伴侶。 2.感恩騫卉師兄給我提供的,種種子的土壤,讓我意識(shí)到其實(shí)他是在幫助我,...
    道和與文淑閱讀 179評(píng)論 0 0
  • 最近訂閱的專(zhuān)欄《精英日課》專(zhuān)欄即將結(jié)束,在專(zhuān)欄中每天聽(tīng)萬(wàn)維剛老師講他的讀書(shū)體會(huì)和個(gè)人感悟,還是有一些收獲的。這里面...
    盎司昂思閱讀 435評(píng)論 0 1

友情鏈接更多精彩內(nèi)容