MySQL的主從同步是一個很成熟的架構,優點為: ①在從伺服器可以執行查詢工作(即我們常說的讀功能),降低主伺服器壓力;②在從主伺服器進行備份,避免備份期間影響主伺服器服務;③當主伺服器出現問題時,可以切換到從伺服器。所以我在項目部署和實施中經常會採用這種方案.+ 資料庫目錄及其它 my.cnf設定檔 /etc/my.cnfmysql資料庫位置 datadir=/var/lib/mysql主要資料庫:192.168.2.119從資料庫:192.168.2.220作業系統:RHEL5.x 32位伺服器類型: 虛擬機器+ mysql5.0.77 安裝: ① 配置好linux的yum服務後,直接yum -y install mysql即可附:安裝php/mysql一條命令安裝:yum -y install httpd php mysql mysql-server php-mysql② 啟動MySQLservice mysqld start(restart|stop)一、設定主庫 1、修改主庫my.cnf,主要是設定個不一樣的id和logbin(#這部可依具體環境而定,壓力大的化可採用huge.cnf)[root@localhost etc]#vi /etc/my.cnf# 記住這部分一定要配置在[mysqld]後面,否則無法找到從節點,各個配置項的含義可自己查閱文檔[mysqld]log-bin=mysql-binserver-id=1binlog-ignore-db=information_schemabinlog-ignore-db=clusterbinlog-ignore-db=mysql2、啟動主庫生效[root@localhost etc]service mysqld restart3、登陸主庫[root@localhost etc]mysql -u root -p4、賦予從庫許可權帳號,允許使用者在主庫上讀取日誌mysql> grant all privileges on *.* to '使用者名稱'@'%' identified by '密碼'; 5、檢查建立是否成功select user,host from mysql.user;6、鎖主庫表 mysql> flush tables with read lock; 7、顯示主庫資訊記錄File和Position,從庫設定將會用到mysql> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 98 | | | +------------------+----------+--------------+------------------+1 row in set (0.00 sec)# 說明,如果執行這個步驟始終為Empty set(0.00 sec),那說明前面的my.cnf沒配置對。8、另開一個終端登陸220,打包主庫遷移資料(如果你使用的yum安裝,有預設資料庫並未做任何改動,則不需要進行拷貝)目的是為了保證兩台伺服器的mysql資料庫一致,這裡可以自行tar打包或者使用mysqldump命令備份恢複的方式進行。二、設定從庫 1、傳輸拿到主庫包、解包# 登陸從庫從上一步中備份的資料庫恢複到220伺服器節點上。2、在119節點上解鎖主庫表(對應第一點設定主庫中第6步鎖主庫表的操作) mysql> unlock tables; 3、在220節點上修改從庫my.cnf(位置一樣)[root@localhost etc]vi my.cnf # 記住這部分一定要配置在[mysqld]後面,否則無法找到從節點,各個配置項的含義可自己查閱文檔[mysqld]log-bin=mysql-binserver-id=2binlog-ignore-db=information_schemabinlog-ignore-db=clusterbinlog-ignore-db=mysqlreplicate-do-db=testreplicate-ignore-db=mysqllog-slave-updatesslave-skip-errors=allslave-net-timeout=60master-host=192.168.2.119master-user=rootmaster-password=pfingo4、在220節點上驗證串連主庫[root@localhost etc]mysql -h 192.168.2.119 -u 使用者名稱 -p 5、在220節點從庫上設定同步#設定串連MASTER MASTER_LOG_FILE為主庫的File,MASTER_LOG_POS為主庫的Position#注意下面第二條命令語句中的master_log_file='mysql-bin.000001', master_log_pos=98;對應為前面在主庫中執行的show master status;結果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、啟動從庫服務mysql> slave start;7、進行測試在主庫上的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 ;在從表中馬上看到了效果,主從同步成功了;為了更進一步驗證在從庫上輸入show slave status/G;mysql> show slave status/G;Slave_IO_Running: Yes(網路正常);Slave_SQL_Running: Yes(表結構正常)進一步驗證了以上過程的正確性。