最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL主從同步、讀寫分離配置步驟

 更新時(shí)間:2012年03月01日 23:01:52   作者:  
根據(jù)要求配置MySQL主從備份、讀寫分離,結(jié)合網(wǎng)上的文檔,對(duì)搭建的步驟和出現(xiàn)的問題以及解決的過程做了如下筆記
現(xiàn)在使用的兩臺(tái)服務(wù)器已經(jīng)安裝了MySQL,全是rpm包裝的,能正常使用。
為了避免不必要的麻煩,主從服務(wù)器MySQL版本盡量保持一致;
環(huán)境:192.168.0.1 (Master)
192.168.0.2 (Slave)
MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1
1、登錄Master服務(wù)器,修改my.cnf,添加如下內(nèi)容;
server-id = 1 //數(shù)據(jù)庫ID號(hào), 為1時(shí)表示為Master,其中master_id必須為1到232–1之間的一個(gè)正整數(shù)值;
log-bin=mysql-bin //啟用二進(jìn)制日志;
binlog-do-db=data //需要同步的二進(jìn)制數(shù)據(jù)庫名;
binlog-ignore-db=mysql //不同步的二進(jìn)制數(shù)據(jù)庫名;這個(gè)同步后聽說很麻煩,我沒有同步;
log-bin=/var/log/mysql/updatelog //設(shè)定生成的log文件名;
log-slave-updates //把更新的記錄寫到二進(jìn)制文件中;
slave-skip-errors //跳過錯(cuò)誤,繼續(xù)執(zhí)行復(fù)制;
2、建立復(fù)制所要使用的用戶;
mysql>grant replication slave on *.* to test@192.168.0.2 identified by '********'
3、重啟mysql;
/usr/bin/mysqladmin -uroot shutdown;
/usr/bin/mysql_safe &
4、現(xiàn)在備份Master上的數(shù)據(jù);
鎖定后我直接tar.gz data這個(gè)庫文件;
mysql>FLUSH TABLES WITH READ LOCK;
cd /var/lib/mysql
tar data.tar.gz data
接著直接執(zhí)行了遠(yuǎn)程scp;
scp ./data.tar.gz root@192.168.0.2:/var/lib/mysql
5、登錄Slave數(shù)據(jù)庫服務(wù)器,修改my.cnf;
server-id = 3 //2已經(jīng)被用在另一個(gè)服務(wù)器上了,如果以后要再加Slave號(hào)接著往后數(shù)就OK了;
log-bin=mysql-bin
master-host = 192.168.0.1
master-user = test
master-password = ******
master-port = 3306
master-connect-retry=60 //如果發(fā)現(xiàn)主服務(wù)器斷線,重新連接的時(shí)間差;
replicate-ignore-db=mysql //不需要備份的數(shù)據(jù)庫;
replicate-do-db=data //需要備份的數(shù)據(jù)庫
log-slave-update
slave-skip-errors
6、解壓剛才從Master scp過來的文件,此處不用改權(quán)限、屬主,默認(rèn)沒有改變,可以根據(jù)實(shí)際情況進(jìn)行修改;
7、上述完成后,可以啟動(dòng)slave了;查看slave狀態(tài);
mysql>slave start;
mysql>show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: test
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: updatelog.000001
Read_Master_Log_Pos: 106
Relay_Log_File: onlinevc-relay-bin.000013
Relay_Log_Pos: 1069
Relay_Master_Log_File: updatelog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: data
Replicate_Ignore_DB: mysql
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: 106
Relay_Log_Space: 1681
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:
1 row in set (0.00 sec)

ERROR:
No query specified

8、查看Master上面的狀態(tài);
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| updatelog.000012 | 15016 | data | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
由此可見兩者的File、Position存在問題,所要要去Slave上設(shè)置對(duì)應(yīng)主庫的Master_Log_File、Read_Master_Log_Pos;執(zhí)行如下語句;
mysql>slave stop;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='test', MASTER_PASSWORD='******',MASTER_LOG_FILE='updatelog.000012',MASTER_LOG_POS=15016;
確保 Slave_IO_Running: Yes 、Slave_SQL_Running: Yes都要為YES才能證明Slave的I/O和SQL進(jìn)行正常。
9、解鎖主庫表;
UNLOCK TABLES;
到此主從MySQL服務(wù)器配置完成,測(cè)試結(jié)果如下;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| updatelog.000012 | 717039 | data | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: test
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: updatelog.000012
Read_Master_Log_Pos: 717039
Relay_Log_File: onlinevc-relay-bin.000013
Relay_Log_Pos: 1222
Relay_Master_Log_File: updatelog.000012
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: data
Replicate_Ignore_DB: mysql
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: 717039
Relay_Log_Space: 1834
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:
1 row in set (0.00 sec)

ERROR:
No query specified
#################################### 如下是MySQL數(shù)據(jù)庫讀寫分離操作步驟 ##########################################
此處使用MySQL自己(Mysql-proxy)的代理實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分離;
所需要安裝包如下;
1、check-0.9.8
2、glib-2.18.4
3、libevent-2.0.6-rc
4、lua-5.1.4
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
5、pkg-config-0.23
6、mysql-5.0.56
7、mysql-proxy-0.8.0
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.0.tar.gz

別的安裝包地址當(dāng)時(shí)沒有記下載地址,不過大部分都在這個(gè)網(wǎng)站上找的;http://sourceforge.net/
&&&&&&&&&& 安裝開始 &&&&&&&&
1、tar -zxvf check-0.8.4.tar.gz
cd check-0.8.4
./configure
make
make install
2、tar -zxvf glib-2.18.4.tar.gz //系統(tǒng)rpm包可能版本低出現(xiàn)了問題3;
./configure
make
make install
3、tar -zxvf libevent-2.0.6-rc.tar.gz
cd libevent-2.0.6-rc
./configure --prefix=/usr/local/libevent
make && make install
4、tar -zxvf lua-5.1.4.tar.gz
INSTALL_TOP= /usr/local/lua // 為了把lua安裝到/var/lib/lua下,故要修改其下的Makefile;
或者直接執(zhí)行:sed -i 's#INSTALL_TOP= /usr/local#INSTALL_TOP= /usr/local/lua#' Makefile
root@testmysql [/software/lua-5.1.4]# make
Please do
make PLATFORM
where PLATFORM is one of these:
aix ansi bsd freebsd generic linux macosx mingw posix solaris
See INSTALL for complete instructions.
這處是要你選擇服務(wù)器所使用的平臺(tái);
執(zhí)行:make linux //此處執(zhí)行后出現(xiàn)了錯(cuò)誤,解決辦法在下面問題解決區(qū)1處,此處先跳過;
再執(zhí)行:make install
設(shè)置環(huán)境變量:
export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
export CPPFLAGS="-I/usr/local/libevent/include"
export CFLAGS="-I/usr/local/libevent/include"

5、tar -zxvf pkg-config-0.23.tar.gz
cd pkg-config-0.23
./configure
make
make install
安裝完之后要執(zhí)行:cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc //原因見下面的問題解決區(qū)2處;
6、安裝MySQL客戶端;
因?yàn)榇朔?wù)器系統(tǒng)是默認(rèn)安裝了MySQL,沒有安裝客戶端,我又裝了client、devel如下所示已安裝的rpm包;
root@testmysql [/software/lua-5.1.4]# rpm -qa | grep MySQL
MySQL-client-5.1.48-0.glibc23
MySQL-bench-5.0.91-0.glibc23
MySQL-test-5.1.48-0.glibc23
MySQL-shared-5.1.48-0.glibc23
MySQL-server-5.1.48-0.glibc23
MySQL-devel-5.1.48-0.glibc23
此后的Mysql-proxy時(shí)總是一直報(bào)錯(cuò),編譯不過去,無奈之下用源碼包客戶端;(此時(shí)的rpm包都沒有卸載,直接執(zhí)行了下面的安裝)//此處問題見問題解決區(qū)4處;
tar zxvf mysql-5.0.56.tar.gz //此處我直接使用了mysql的5.0.56的源碼包;
cd mysql-5.0.56
./configure --prefix=/usr/local/mysql --without-server
make && make install

7、tar xvf mysql-proxy-0.8.0.tar.gz
cd mysql-proxy-0.8.0
./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua //問題解決處4有介紹;
Make && Make install

8、在/var/lib/bin創(chuàng)建mysql-proxy.sh,內(nèi)容如下;
#!/bin/bash
LUA_PATH="/usr/local/mysql-proxy/lib/mysql-proxy/lua/?.lua" /usr/local/mysql-proxy/bin/mysql-proxy --proxy-backend-addresses=192.168.0.1:3306 --proxy-read-only-backend-addresses=192.168.0.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/rw-splitting.lua >> /var/log/mysql-proxy.log &
然后加上可執(zhí)行權(quán)限;
chmod a+x /var/lib/bin/mysql-proxy.sh
執(zhí)行:/var/lib/bin/mysql-proxy.sh 啟動(dòng)服務(wù);
9、驗(yàn)證是否開戶了:4040、4041;
root@testmysql [/usr/local/bin]# netstat -an | grep 404*
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN
10、測(cè)試讀寫分離,此步略過,所有配置已經(jīng)完成。

&&&&&&&&&&&&&&&&&&&&&&&&&&& 問題解決區(qū) &&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、在安裝的第四步執(zhí)行make linux時(shí)報(bào)錯(cuò)如下:
root@testmysql [/software/lua-5.1.4]# make linux
cd src && make linux
make[1]: Entering directory `/software/lua-5.1.4/src'
make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
make[2]: Entering directory `/software/lua-5.1.4/src'
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lapi.o lapi.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lcode.o lcode.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldebug.o ldebug.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldo.o ldo.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldump.o ldump.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lfunc.o lfunc.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lgc.o lgc.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o llex.o llex.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lmem.o lmem.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lobject.o lobject.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lopcodes.o lopcodes.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lparser.o lparser.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstate.o lstate.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstring.o lstring.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltable.o ltable.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltm.o ltm.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lundump.o lundump.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lvm.o lvm.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lzio.o lzio.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lauxlib.o lauxlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lbaselib.o lbaselib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldblib.o ldblib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o liolib.o liolib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lmathlib.o lmathlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o loslib.o loslib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltablib.o ltablib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstrlib.o lstrlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o loadlib.o loadlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o
ranlib liblua.a
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lua.o lua.c
In file included from lua.h:16,
from lua.c:15:
luaconf.h:275:31: error: readline/readline.h: No such file or directory
luaconf.h:276:30: error: readline/history.h: No such file or directory
lua.c: In function 鈥榩ushline鈥?
lua.c:182: warning: implicit declaration of function 鈥榬eadline鈥?
lua.c:182: warning: assignment makes pointer from integer without a cast
lua.c: In function 鈥榣oadline鈥?
lua.c:210: warning: implicit declaration of function 鈥榓dd_history鈥?
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/software/lua-5.1.4/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/software/lua-5.1.4/src'
make: *** [linux] Error 2

解決方法:yum install libtermcap-devel
yum install ncurses-devel
yum install libevent-devel
yum install readline-devel

2、安裝MySQL-proxy時(shí)報(bào)錯(cuò):
checking for LUA... configure: error: Package requirements (lua5.1 >= 5.1) were not met:

No package 'lua5.1' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LUA_CFLAGS
and LUA_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc

3、安裝MySQL-proxy時(shí)報(bào)錯(cuò):
checking for GLIB... configure: error: Package requirements (glib-2.0 >= 2.16.0) were not met:

No package 'glib-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GLIB_CFLAGS
and GLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
1、查看系統(tǒng)已經(jīng)安裝glib的rpm包;
glibc-2.5-49.el5_5.4
glibc-headers-2.5-49.el5_5.4
glib2-2.12.3-4.el5_3.1
glibc-common-2.5-49.el5_5.4
glibc-devel-2.5-49.el5_5.4
2、下載安裝glib-2.18.4.tar.gz

4、剛開始使用系統(tǒng)里rpm所指定的mysq_config時(shí),mysql-proxy安裝報(bào)錯(cuò),信息如下;
configure: error: mysql_config not exists or not executable, use $ ./configure --with-mysql=/path/to/mysql_config
看到幫助安裝文檔里要求如下:
--with-mysql[=PATH] Include MySQL support. PATH is the path to 'mysql_config'。
解決辦法就是:安裝包中的第6步。

相關(guān)文章

  • Mysql的MHA高可用及故障切換問題小結(jié)

    Mysql的MHA高可用及故障切換問題小結(jié)

    MHA是基于MySQL主從復(fù)制的高可用解決方案,通過自動(dòng)切換到從節(jié)點(diǎn)并提升其為新主,實(shí)現(xiàn)數(shù)據(jù)庫的高可用和故障恢復(fù),配置包括主從復(fù)制、MHA組件、VIP管理等,通過配置無密碼認(rèn)證和測(cè)試連接,可以確保MHA正常運(yùn)行,感興趣的朋友一起看看吧
    2024-12-12
  • mysql 正則表達(dá)式查詢含有非數(shù)字和字符的記錄

    mysql 正則表達(dá)式查詢含有非數(shù)字和字符的記錄

    這篇文章主要介紹了mysql 正則表達(dá)式查詢含有非數(shù)字和字符的記錄的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • MySQL一個(gè)語句查出各種整形占用字節(jié)數(shù)及最大最小值的實(shí)例

    MySQL一個(gè)語句查出各種整形占用字節(jié)數(shù)及最大最小值的實(shí)例

    下面小編就為大家?guī)硪黄狹ySQL一個(gè)語句查出各種整形占用字節(jié)數(shù)及最大最小值的實(shí)例。
    2017-03-03
  • MySQL使用LVM快照實(shí)現(xiàn)備份

    MySQL使用LVM快照實(shí)現(xiàn)備份

    本文給大家詳細(xì)的說明了使用LVM快照的方式來為Mysql制作備份的方法和步驟,有需要的小伙伴可以參考下
    2016-11-11
  • MySQL中庫的基本操作指南(推薦!)

    MySQL中庫的基本操作指南(推薦!)

    MySQL這個(gè)數(shù)據(jù)庫是一個(gè)客戶端-服務(wù)器結(jié)構(gòu)的程序,下面這篇文章主要給大家介紹了關(guān)于MySQL中庫的基本操作指南,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 正確使用MySQL INSERT INTO語句

    正確使用MySQL INSERT INTO語句

    MySQL數(shù)據(jù)庫是一種小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),MySQL數(shù)據(jù)庫的優(yōu)化是MySQL數(shù)據(jù)庫操作過程中非常重要的工作,MySQL數(shù)據(jù)庫的優(yōu)化能夠?qū)崿F(xiàn)MySQL數(shù)據(jù)庫操作的簡(jiǎn)便。
    2015-08-08
  • MySQL時(shí)間類型和模式詳情

    MySQL時(shí)間類型和模式詳情

    這篇文章主要介紹MySQL時(shí)間類型和模式 MySQL會(huì)在存儲(chǔ)時(shí)將數(shù)據(jù)值轉(zhuǎn)換為UTC標(biāo)準(zhǔn)時(shí)間來存儲(chǔ),讀取時(shí)再轉(zhuǎn)為當(dāng)前時(shí)間。如果你的時(shí)區(qū)沒有發(fā)生改變,則該值就是你存儲(chǔ)的值,如果你改變了時(shí)區(qū),讀取到的值就會(huì)發(fā)生變化。這個(gè)特性不會(huì)對(duì)DATETIME生效,需要的朋友可以參考一下
    2021-09-09
  • mysql啟用skip-name-resolve模式時(shí)出現(xiàn)Warning的處理辦法

    mysql啟用skip-name-resolve模式時(shí)出現(xiàn)Warning的處理辦法

    在優(yōu)化MYSQL配置時(shí),加入 skip-name-resolve ,在重新啟動(dòng)MYSQL時(shí)檢查啟動(dòng)日志,發(fā)現(xiàn)有警告信息
    2012-07-07
  • 一次Mysql?update?sql不當(dāng)引起的生產(chǎn)故障記錄

    一次Mysql?update?sql不當(dāng)引起的生產(chǎn)故障記錄

    這篇文章主要給大家介紹了關(guān)于一次Mysql?update?sql不當(dāng)引起的生產(chǎn)故障的相關(guān)資料,由于update涉及到數(shù)據(jù)的修改,所以很容易推斷,update語句比select語句會(huì)更復(fù)雜一些,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • MySQL是如何保證數(shù)據(jù)的完整性

    MySQL是如何保證數(shù)據(jù)的完整性

    這篇文章主要介紹了MySQL是如何保證數(shù)據(jù)的完整性,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

青田县| 察哈| 苏尼特右旗| 信阳市| 岐山县| 右玉县| 饶阳县| 黔西县| 竹山县| 通城县| 甘谷县| 金寨县| 两当县| 孝感市| 河北区| 同仁县| 七台河市| 宜城市| 金川县| 洛阳市| 隆回县| 平昌县| 甘洛县| 大竹县| 五寨县| 庆安县| 南乐县| 清流县| 宁晋县| 孝感市| 普洱| 鄄城县| 抚远县| 克拉玛依市| 榆林市| 潼南县| 新郑市| 新巴尔虎右旗| 民县| 阿拉尔市| 永州市|