mysql主從配置

來源:互聯網
上載者:User

標籤:log檔案   出現   mysqld   設定   hang   init   from   basedir   增加   

MySQL主從原理非常簡單,總結一下:
每個從僅可以設定一個主。
主在執行sql之後,記錄二進位 log檔案(bin-log)。
從串連主,並從主擷取 binlog,存於本地relay-log,並從上次記住的位置起執行 sql,
一旦遇到錯誤則停止同步。
從這幾條Replication 原理來看,可以有這些推論:
主從間的資料庫不是即時同步,就算網路連接正常,也存在瞬間,主從資料不一致。
如果主從的網路斷開,從會在網路正常後,批量同步。
如果對從進行修改資料,那麼很可能從在執行主的bin-log時出現錯誤而停止同步,這
個是很危險的操作。所以一般情況下,非常小心的修改從上的資料。
一個衍生的配置是雙主,互為主從配置,只要雙方的修改不衝突,可以工作良好。
如果需要多主的話,可以用環形配置,這樣任意一個節點的修改都可以同步到所有節點。
可以應用在讀寫分離的情境中,用以降低單台 MySQL伺服器的I/O
可以實現MySQL服務的HA 叢集
可以是1主多從,也可以是相互主從(主主)
說明: 以下文檔為在同一個機器上,配置兩個 mysql服務,在我們上課的時候,會用
兩台單獨的機器來示範,但步驟基本上一樣。
1.安裝配置mysql
進入/usr/local/src下載
wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz
初始化MySQL
#tar zxvf /usr/local/src/mysql-5.1.73-linux-i686-icc-glibc23.tar.gz //解壓
#mv mysql-5.1.73-linux-i686-icc-glibc23 /usr/local/mysql //挪動位置
#useradd -s /sbin/nologin mysql //建立 mysql 使用者
#cd /usr/local/mysql
#mkdir -p /data/mysql // 建立 datadir,資料庫檔案會放到這裡面
#chown -R mysql:mysql /data/mysql //更改許可權
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

配置 mysql
拷貝設定檔
#cp support-files/my-large.cnf /etc/my.cnf
拷貝啟動指令檔並修改其屬性
#cp support-files/mysql.server /etc/init.d/mysqld
#chmod 755 /etc/init.d/mysqld
修改啟動指令碼
#vim /etc/init.d/mysqld
需要修改的地方有 “basedir=/usr/local/mysql;datadir=/data/mysql” (前面初始化資料庫時定義的目錄)。

為了做實驗方便,我們在同一台機器上配置兩
個MySQL服務(跑兩個連接埠)。
#cd /usr/local/
#cp -r mysql mysql_2
#cd mysql_2;
初始化mysql2
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql2
拷貝設定檔
#cp /etc/my.cnf ./my.cnf
修改設定檔相關參數
#vim my.cnf
更改port為3307 以及socket為/tmp/mysql2.sock
cp /etc/init.d/mysqld /etc/init.d/mysqld2
vim /etc/init.d/mysqld2
更改如下內容:
basedir=/usr/local/mysql_2
datadir=/data/mysql2
conf=$basedir/my.cnf
儲存退出,然後啟動mysql2
/etc/init.d/mysqld2 start

配置主從準備工作
我們設定/usr/local/mysql_2 為主,連接埠3307,/usr/local/mysql為從,連接埠為 3306。
在主上建立測試庫
#mysql -uroot -S /tmp/mysql2.sock -e "create database db1;"
然後匯出主的mysql庫資料然後匯入給db1
#mysqldump -uroot -S /tmp/mysql2.sock mysql > 123.sql
#mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

配置主(master)
#vim /usr/local/mysql_2/my.cnf
修改或添加:
server-id=1
log-bin=mysql-bin
兩個選擇性參數(2 選1):
binlog-do-db=db1,db2 #用來指定需要同步的庫
binlog-ignore-db=db1,db2 #指定忽略不同步的庫
修改設定檔後,重啟 mysql_2
#pid=ps uax |grep mysql2.sock |grep -v grep |awk ‘{print $2}‘ ; kill $pid; cd
/usr/local/mysql_2/bin/; ./mysqld_safe --defaults-file=../my.cnf --user=mysql & ##/etc/init.d/mysqld2 restart
設定root密碼
#mysqladmin -u root -S /tmp/mysql2.sock password ‘a123456bc‘
#mysql -u root -S /tmp/mysql2.sock -pa123456bc
然後授權給從一個用來同步資料的使用者 repl

grant replication slave on . to ‘repl‘@‘127.0.0.1‘ identified by ‘123123‘;
flush privileges;
flush tables with read lock;
show master status; #一定要記住前兩列的內容,後面會用到

設定從(slave)

vim /etc/my.cnf

修改或增加
server-id = 2 #這個數值不能和主一樣
選擇性參數replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2,意義同主的那兩個可
選參數,如果主已經定義過了,那麼從上就不用再次加這些參數了。然後重啟 mysqld 服務。

service mysqld restart

拷貝主的db1庫資料到從
#mysqldump -uroot -S /tmp/mysql2.sock -pa123456bc db1 > db1.sql

給從上建立db1資料庫
#mysql -uroot -S /tmp/mysql.sock -e "create database db1";
然後把db1.sql匯入給從庫

#mysql -uroot -S /tmp/mysql.sock db1 < db1.sql
登入從mysql
mysql -uroot -S /tmp/mysql.sock
執行如下指令

slave stop;
change master to master_host=‘127.0.0.1‘, master_port=3307, master_user=‘repl‘,
master_password=‘123123‘, master_log_file=‘mysql-bin.000006‘, master_log_pos=474952;
slave start;
然後到主上執行
#mysql -uroot -S /tmp/mysql2.sock -p123456 -e "unlock tables"
在從上查看狀態
show slave status\G;
看是否有如下顯示
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
只有兩個同時為YES,才算正常。

測試主從
在主上清空db1庫的 db表

use db1;
select count() from db";
truncate table db;
進入slave,查看 db1庫db表
use db1;
select count(
) from db;
如果得出的結果為 0了,說明主從是同步的。
然後在主上刪除表 db
drop table db;
在從上看db表不存在了
select count(*) from db;

建議: MySQL主從機制比較脆弱,謹慎操作。如果重啟 master,務必要先把 slave停掉,
也就是說需要在slave 上去執行slave stop命令,然後再去重啟 master的 mysql 服務,否則
很有可能就會中斷了。當然重啟完後,還需要把slave 給開啟slave start。

mysql主從配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.