MySQL數(shù)據(jù)庫主從同步安裝與配置總結(jié)
MySQL的主從同步是一個很成熟的架構(gòu),優(yōu)點(diǎn)為:
①在從服務(wù)器可以執(zhí)行查詢工作(即我們常說的讀功能),降低主服務(wù)器壓力;
②在從主服務(wù)器進(jìn)行備份,避免備份期間影響主服務(wù)器服務(wù);
③當(dāng)主服務(wù)器出現(xiàn)問題時,可以切換到從服務(wù)器。
所以我在項(xiàng)目部署和實(shí)施中經(jīng)常會采用這種方案.
+ 數(shù)據(jù)庫目錄及其它
my.cnf配置文件 /etc/my.cnf
mysql數(shù)據(jù)庫位置 datadir=/var/lib/mysql
主數(shù)據(jù)庫:192.168.2.119
從數(shù)據(jù)庫:192.168.2.220
操作系統(tǒng):RHEL5.x 32位
服務(wù)器類型: 虛擬機(jī)
+ mysql5.0.77 安裝:
① 配置好linux的yum服務(wù)后,直接yum -y install mysql即可
附:安裝php\mysql一條命令安裝:yum -y install httpd php mysql mysql-server php-mysql
② 啟動MySQL
service mysqld start(restart|stop)
一、設(shè)置主庫
1、修改主庫my.cnf,主要是設(shè)置個不一樣的id和logbin(#這部可依具體環(huán)境而定,壓力大的化可采用huge.cnf)
[root@localhost etc]#vi /etc/my.cnf
# 記住這部分一定要配置在[mysqld]后面,否則無法找到從節(jié)點(diǎn),各個配置項(xiàng)的含義可自己查閱文檔
[mysqld] log-bin=mysql-bin server-id=1 binlog-ignore-db=information_schema binlog-ignore-db=cluster binlog-ignore-db=mysql |
2、啟動主庫生效
[root@localhost etc]service mysqld restart
3、登陸主庫
[root@localhost etc]mysql -u root -p
4、賦予從庫權(quán)限帳號,允許用戶在主庫上讀取日志
mysql> grant all privileges on *.* to '用戶名'@'%' identified by '密碼';
5、檢查創(chuàng)建是否成功
select user,host from mysql.user;
6、鎖主庫表
mysql> flush tables with read lock;7、顯示主庫信息
記錄File和Position,從庫設(shè)置將會用到
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 98 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) # 說明,如果執(zhí)行這個步驟始終為Empty set(0.00 sec),那說明前面的my.cnf沒配置對。 |
8、另開一個終端登陸220,打包主庫遷移數(shù)據(jù)(如果你使用的yum安裝,有默認(rèn)數(shù)據(jù)庫并未做任何改動,則不需要進(jìn)行拷貝)
目的是為了保證兩臺服務(wù)器的mysql數(shù)據(jù)庫一致,這里可以自行tar打包或者使用mysqldump命令備份恢復(fù)的方式進(jìn)行。
二、設(shè)置從庫
1、傳輸拿到主庫包、解包
# 登陸從庫
從上一步中備份的數(shù)據(jù)庫恢復(fù)到220服務(wù)器節(jié)點(diǎn)上。
2、在119節(jié)點(diǎn)上解鎖主庫表(對應(yīng)第一點(diǎn)設(shè)置主庫中第6步鎖主庫表的操作)
mysql> unlock tables;
3、在220節(jié)點(diǎn)上修改從庫my.cnf(位置一樣)
# 記住這部分一定要配置在[mysqld]后面,否則無法找到從節(jié)點(diǎn),各個配置項(xiàng)的含義可自己查閱文檔
[mysqld] log-bin=mysql-bin server-id=2 binlog-ignore-db=information_schema binlog-ignore-db=cluster binlog-ignore-db=mysql replicate-do-db=test replicate-ignore-db=mysql log-slave-updates slave-skip-errors=all slave-net-timeout=60 master-host=192.168.2.119 master-user=root master-password=pfingo |
4、在220節(jié)點(diǎn)上驗(yàn)證連接主庫
[root@localhost etc]mysql -h 192.168.2.119 -u 用戶名 -p
5、在220節(jié)點(diǎn)從庫上設(shè)置同步
#設(shè)置連接MASTER MASTER_LOG_FILE為主庫的File,MASTER_LOG_POS為主庫的Position #注意下面第二條命令語句中的master_log_file='mysql-bin.000001', master_log_pos=98;對應(yīng)為前面在主庫中執(zhí)行的show master status;結(jié)果 mysql> slave stop; mysql> change master to master_host='192.168.2.119',master_user='root',master_password='pfingo',master_log_file='mysql-bin.000001', master_log_pos=98; mysql> slave start; |
6、啟動從庫服務(wù)
mysql> slave start;
7、進(jìn)行測試
在主庫上的test庫上建立名為myTest的表
mysql> CREATE TABLE `myTest` ( `id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT , `username` VARCHAR( 20 ) NOT NULL , `password` CHAR( 32 ) NOT NULL , `last_update` DATETIME NOT NULL , `number` FLOAT( 10 ) NOT NULL , `content` TEXT NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ; |
在從表中馬上看到了效果,主從同步成功了;
為了更進(jìn)一步驗(yàn)證在從庫上輸入show slave status\G;
mysql> show slave status\G;
Slave_IO_Running: Yes(網(wǎng)絡(luò)正常);
Slave_SQL_Running: Yes(表結(jié)構(gòu)正常)
進(jìn)一步驗(yàn)證了以上過程的正確性。
posted on 2014-03-28 11:24 順其自然EVO 閱讀(236) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫