來源: ①在從服務(wù)器可以執(zhí)行查詢工作(即我們常說的讀功能),降低主服務(wù)器壓力;
②在從主服務(wù)器進(jìn)行備份,避免備份期間影響主服務(wù)器服務(wù),;
③當(dāng)主服務(wù)器出現(xiàn)問題時(shí),可以切換到從服務(wù)器。
所以我在項(xiàng)目部署和實(shí)施中經(jīng)常會(huì)采用這種方案.
+ 數(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
② 啟動(dòng)MySQL
service mysqld start(restart|stop)
一、設(shè)置主庫
1,、修改主庫my.cnf,主要是設(shè)置個(gè)不一樣的id和logbin(#這部可依具體環(huán)境而定,,壓力大的化可采用huge.cnf)
[root@localhost etc]#vi /etc/my.cnf
# 記住這部分一定要配置在[mysqld]后面,否則無法找到從節(jié)點(diǎn),,各個(gè)配置項(xiàng)的含義可自己查閱文檔
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
2,、啟動(dòng)主庫生效
[root@localhost etc]service mysqld restart
3、登陸主庫
[root@localhost etc]mysql -u root -p
4,、賦予從庫權(quán)限賬號(hào),,允許用戶在主庫上讀取日志
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è)置將會(huì)用到
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 98 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
# 說明,,如果執(zhí)行這個(gè)步驟始終為Empty set(0.00 sec),,那說明前面的my.cnf沒配置對(duì)。
8、另開一個(gè)終端登陸220,,打包主庫遷移數(shù)據(jù)(如果你使用的yum安裝,,有默認(rèn)數(shù)據(jù)庫并未做任何改動(dòng),則不需要進(jìn)行拷貝)
目的是為了保證兩臺(tái)服務(wù)器的mysql數(shù)據(jù)庫一致,,這里可以自行tar打包或者使用mysqldump命令備份恢復(fù)的方式進(jìn)行,。
二、設(shè)置從庫
1,、傳輸拿到主庫包,、解包
# 登陸從庫
從上一步中備份的數(shù)據(jù)庫恢復(fù)到220服務(wù)器節(jié)點(diǎn)上。
2,、在119節(jié)點(diǎn)上解鎖主庫表(對(duì)應(yīng)第一點(diǎn)設(shè)置主庫中第6步鎖主庫表的操作)
mysql> unlock tables;
3,、在220節(jié)點(diǎn)上修改從庫my.cnf(位置一樣)
[root@localhost etc]vi my.cnf
# 記住這部分一定要配置在[mysqld]后面,否則無法找到從節(jié)點(diǎn),,各個(gè)配置項(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;對(duì)應(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,、啟動(dòng)從庫服務(wù)
mysql> slave start;
7、進(jìn)行測(cè)試
在主庫上的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)證了以上過程的正確性,。
|
|