單機(jī)多實例-主從同步復(fù)制嘗試

【背景】

一直想試試單機(jī)多實例,玩下MySQL的主從復(fù)制阱扬;之前偶爾也研究過泣懊,由于各種原因,種種失敿廴稀嗅定;
今天偶得閑暇自娩,再次嘗試用踩,沒想到還挺順利的,謝謝網(wǎng)上的各位大牛忙迁,終于如常所愿脐彩,裝逼了一把;

【前提準(zhǔn)備】

  • 下載MySQL(原先一大攔路虎是編譯MySQL姊扔,今天發(fā)現(xiàn)可以不用編譯的惠奸,下載編譯后的版本即可)下載傳遞門

  • 按照參考1中的步驟恰梢,一步一步下來佛南,參考1中,將MySQL放在了/tmp目錄下嵌言,不是很喜歡嗅回,做了調(diào)整,放在了~/Dev/mysql;
    我這里的目錄安排是:


    圖1.png

    與參考1的區(qū)別是:

    • 新建了mysql_multi目錄摧茴,存放data_3307绵载,data_3308(系統(tǒng)自帶的MySQL運(yùn)行在3306,在此端口號順移一個)而且運(yùn)行時的sock文件也放在對應(yīng)的data下面,后文將會看到娃豹;
    • 新建了logs目錄焚虱,喜歡將各自的應(yīng)用的logs放在自己的目錄下,方便查找懂版;
  • conf的配置
    3307配置鹃栽,存放位置conf/3307.cnf
    因為是需要嘗試主從復(fù)制,所以定续,主從復(fù)制的配置也可以體現(xiàn)

[client]
default-character-set=utf8    #客戶端連接編碼

[mysql]
auto-rehash                   #客戶端tab補(bǔ)全
default-character-set=utf8    #編碼

[mysqld]
user=mysql                    #運(yùn)行賬戶
port=3307                     #定義端口
log-bin=mysql-bin             #開啟二進(jìn)制日志
server-id=001                 #定義服務(wù)ID

max_allowed_packet=50M        ###最大
wait_timeout=3600             ###等待超時默認(rèn)s 
interactive_timeout=3600      ###活動超時

innodb_buffer_pool_size = 128M
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

# 主從復(fù)制相關(guān)配置
## 復(fù)制過濾:也就是指定哪個數(shù)據(jù)庫不用同步(mysql庫一般不同步)
binlog-ignore-db=mysql
## 為每個session 分配的內(nèi)存谍咆,在事務(wù)過程中用來存儲二進(jìn)制日志的緩存
binlog_cache_size=1M
## 主從復(fù)制的格式(mixed,statement,row,默認(rèn)格式是statement)
binlog_format=mixed
## 二進(jìn)制日志自動刪除/過期的天數(shù)私股。默認(rèn)值為0摹察,表示不自動刪除。
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤倡鲸,避免slave端復(fù)制中斷供嚎。
## 如:1062錯誤是指一些主鍵重復(fù),1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

basedir=/home/www/Dev/mysql/mysql_multi                 #MYSQL根目錄
datadir=/home/www/Dev/mysql/mysql_multi/data_3307       #MYSQL數(shù)據(jù)存放目錄
socket=/home/www/Dev/mysql/mysql_multi/data_3307/3307_mysql.sock              #套接字

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8                #定義數(shù)據(jù)庫默認(rèn)字符 server\collation
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

symbolic-links=0

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names = 0             #對表的大小寫不敏感

[mysqld_safe]
log-error=/home/www/Dev/mysql/logs/3307_err.log              #錯誤日志
pid-file=/home/www/Dev/mysql/mysql_multi/data_3307/mysqld.pid   #pid,多協(xié)議通信 tcp/sock

類似的峭状,3308配置克滴,存放位置 conf/3308.cnf

[client]
default-character-set=utf8    #客戶端連接編碼

[mysql]
auto-rehash                   #客戶端tab補(bǔ)全
default-character-set=utf8    #編碼

[mysqld]
user=mysql
port=3308                     #定義端口
log-bin=mysql-bin             #開啟二進(jìn)制日志
server-id=011                 #定義服務(wù)ID

max_allowed_packet=50M        ###最大
wait_timeout=3600             ###等待超時默認(rèn)s 
interactive_timeout=3600      ###活動超時

innodb_buffer_pool_size = 128M
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

# 主從復(fù)制相關(guān)
## 復(fù)制過濾:也就是指定哪個數(shù)據(jù)庫不用同步(mysql庫一般不同步)
binlog-ignore-db=mysql
## 為每個session 分配的內(nèi)存,在事務(wù)過程中用來存儲二進(jìn)制日志的緩存
binlog_cache_size=1M
## 主從復(fù)制的格式(mixed,statement,row优床,默認(rèn)格式是statement)
binlog_format=mixed
## 二進(jìn)制日志自動刪除/過期的天數(shù)劝赔。默認(rèn)值為0,表示不自動刪除胆敞。
expire_logs_days=7
## 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤着帽,避免slave端復(fù)制中斷。
## 如:1062錯誤是指一些主鍵重復(fù)移层,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062
## relay_log配置中繼日志
relay_log=mysql-relay-bin
## log_slave_updates表示slave將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates=1
## 防止改變數(shù)據(jù)(除了特殊的線程) 
read_only=1

basedir=/home/www/Dev/mysql/mysql_multi                 #MYSQL根目錄
datadir=/home/www/Dev/mysql/mysql_multi/data_3308       #MYSQL數(shù)據(jù)存放目錄
socket=/home/www/Dev/mysql/mysql_multi/data_3308/3308_mysql.sock              #套接字

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8                #定義數(shù)據(jù)庫默認(rèn)字符 server\collation
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

symbolic-links=0

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names = 0             #對表的大小寫不敏感

[mysqld_safe]
log-error=/home/www/Dev/mysql/logs/3308_err.log              #錯誤日志
pid-file=/home/www/Dev/mysql/mysql_multi/data_3308/mysqld.pid   #pid,多協(xié)議通信 tcp/sock
  • 初始化數(shù)據(jù)庫
    (可能參考1配置的版本比較老仍翰,提示./scripts/mysql_install_db方式不可取)
./bin/mysqld --defaults-file=conf/3307.cnf --user=www --initialize --basedir=/home/www/Dev/mysql --datadir=/home/www/Dev/mysql/mysql_multi/data_3307
./bin/mysqld --defaults-file=conf/3308.cnf --user=www --initialize --basedir=/home/www/Dev/mysql --datadir=/home/www/Dev/mysql/mysql_multi/data_3308

從啟動中也可以看到观话,具體的目錄予借、配置的存放位置了;需要注意的是频蛔,--defaults-file參數(shù)需要緊跟著./bin/mysqld,剛開始隨意放了個位置灵迫,居然提示 不認(rèn)識這個選項

  • 啟動數(shù)據(jù)庫
./bin/mysqld_safe --defaults-file=conf/3307.cnf &
./bin/mysqld_safe --defaults-file=conf/3308.cnf &

首次啟動后的日志文件中,最后一行包含了臨時root用戶的密碼晦溪,這個需要保持下來瀑粥,例如:

A temporary password is generated for root@localhost: dhtiYkKwt4&O 

既然啟動了,就連接試試看唄

./bin/mysql -S /home/www/Dev/mysql/mysql_multi/data_3307/3307_mysql.sock -P 3307 -u root -p

使用啟動時的臨時密碼登錄尼变;
在隨后的show databases時利凑,報錯:
ERROR 1820(HY000) Unknown error 1820
百度了下浆劲,需要設(shè)置密碼SET PASSWORD=PASSWORD('mima'),就可以了。

圖2.png

此時參考1中的設(shè)置密碼一步就不再需要了

至此哀澈,單機(jī)多實例就算完成牌借,之后,配置主從同步

  • 新建同步的賬號
# 在3307上新建同步的賬號割按,讓3308同步3307的改變
create user 'sync'@'localhost' identified by 'sync';
  • 對同步的賬號授權(quán)可以同步的權(quán)利
grant replication slave on *.* to 'sync'@'localhost' identified by 'sync';
  • 查看主庫的狀態(tài)


    圖3.png
  • 切換到從庫(3308)膨报,讓3308同步3307

change master to master_host='localhost', master_port=3307, master_user='sync', master_password='sync', master_log_file='mysql-bin.000003', master_log_pos=154;

看到如此隨意的change master to .... 開始懷疑參考1的嚴(yán)肅性,查看了其他的博客适荣,發(fā)現(xiàn)也是這樣现柠,那就試試了,還真是的弛矛,執(zhí)行沒報錯的話够吩,show slave status 是這樣

圖4.png

此時還沒開啟同步;

  • 開啟同步
# 開啟同步 
start  slave; 
# 停止從主機(jī)  
stop slave丈氓;

開啟后周循,show slave status展示的上圖飄紅部分是YES,例如:

圖5.png

  • 隨后在主庫上新建個庫万俗,創(chuàng)建表湾笛,寫入幾個數(shù)據(jù)看看;
# 新建數(shù)據(jù)庫`webdb`
create databases webdb;

# 新建測試數(shù)據(jù)表 t
create table t(`a` int, `b` int);

# 寫入一行數(shù)據(jù)
insert into t set a=1,b=2; 

查看從庫的同步


圖6.png

此時闰歪,可以查看主庫的show master status和從庫的show slave status嚎研,其中的position是一致的,也就是主從沒有延遲库倘;

圖7.png

圖8.png

【參考書】
1临扮、https://www.cnblogs.com/xiaochina/p/6886115.html
2、http://www.raye.wang/2017/04/14/mysqlzhu-cong-fu-zhi-da-jian-ji-yu-ri-zhi-binlog
3于樟、http://www.reibang.com/p/63c1a1babfd1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末公条,一起剝皮案震驚了整個濱河市拇囊,隨后出現(xiàn)的幾起案子迂曲,更是在濱河造成了極大的恐慌,老刑警劉巖寥袭,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件路捧,死亡現(xiàn)場離奇詭異,居然都是意外死亡传黄,警方通過查閱死者的電腦和手機(jī)杰扫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膘掰,“玉大人章姓,你說我怎么就攤上這事佳遣。” “怎么了凡伊?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵零渐,是天一觀的道長。 經(jīng)常有香客問我系忙,道長诵盼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任银还,我火速辦了婚禮风宁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛹疯。我一直安慰自己戒财,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布捺弦。 她就那樣靜靜地躺著固翰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羹呵。 梳的紋絲不亂的頭發(fā)上骂际,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機(jī)與錄音冈欢,去河邊找鬼歉铝。 笑死,一個胖子當(dāng)著我的面吹牛凑耻,可吹牛的內(nèi)容都是我干的太示。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼香浩,長吁一口氣:“原來是場噩夢啊……” “哼类缤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邻吭,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤餐弱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后囱晴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膏蚓,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年畸写,在試婚紗的時候發(fā)現(xiàn)自己被綠了言沐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹤啡。...
    茶點(diǎn)故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡算墨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出采郎,到底是詐尸還是另有隱情,我是刑警寧澤狂魔,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布尉剩,位于F島的核電站,受9級特大地震影響毅臊,放射性物質(zhì)發(fā)生泄漏理茎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一管嬉、第九天 我趴在偏房一處隱蔽的房頂上張望皂林。 院中可真熱鬧,春花似錦蚯撩、人聲如沸础倍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沟启。三九已至,卻和暖如春犹菇,著一層夾襖步出監(jiān)牢的瞬間德迹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工揭芍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胳搞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓称杨,卻偏偏與公主長得像肌毅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姑原,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM店乐、二進(jìn)制和源碼安裝 1.1BLOG文檔結(jié)構(gòu)圖 ...
    小麥苗DB寶閱讀 10,563評論 0 31
  • 陽光明媚艰躺,卻沒有暖意呻袭,院內(nèi)高高的白楊樹上稀疏的葉子在風(fēng)中瑟瑟地顫抖眨八,偶爾有幾片葉蕭索地落下,不知是因風(fēng)殷情的狂邀還...
    三公子唐閱讀 620評論 0 3
  • 365=拿起你+傳媒+傅黃章+工管8班左电。在一些寧靜的夜晚里廉侧,我在想:要是沒有遇見你页响,我大一一年的生活會是什么樣子...
    洛邀閱讀 268評論 0 1
  • 《大時代》之后的愛情故事 《金裝四大才子》之后的愛情故事 最美的故事原來一直在故事之外 你們的故事比你們演過的故事...
    人生且呵呵閱讀 186評論 0 0
  • 2011年2月1日,這是我正式進(jìn)入國有銀行工作的第一天段誊。我和另外三個女孩被分配到縣城南邊的一個網(wǎng)點(diǎn)闰蚕,開始了為期三個...
    紫莯_閱讀 2,148評論 34 30