配置MySQLReplication的詳細(xì)步驟

不知道大家之前對類似配置MySQL Replication的詳細(xì)步驟的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完配置MySQL Replication的詳細(xì)步驟你一定會有所收獲的。

創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)臨潁,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

MySQL Replication主要用于MySQL的時時備份或者讀寫分離。在配置之前先做一下準(zhǔn)備工作,配置兩臺mysql云服務(wù)器,或者在一臺云服務(wù)器上配置兩個端口也可以。
流程示意圖:

A-->change data-->bin_log-->transfer-->B-->repl_log-->change data

一、搭建好了一個mysql,跑的是3306端口。

1、下載mysql到/usr/local/src/

wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 

2、解壓縮

tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

3.把解壓完的數(shù)據(jù)移動到/usr/local/mysql

mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

4.建立mysql用戶

useradd -s /sbin/nologin mysql

5.初始化數(shù)據(jù)庫

cd /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql  /data/mysql
./scripts/mysql_install_db  --user=mysql  --datadir=/data/mysql 

6.拷貝配置文件
cp support-files/my-large.cnf   /etc/my.cnf拷貝配置文件
7.拷貝啟動腳本文件并修改其屬性

cp support-files/mysql.server    /etc/init.d/mysqld
chmod 755  /etc/init.d/mysqld

8.修改啟動腳本

vim /etc/init.d/mysqld

需要修改的地方有 “datadir=/data/mysql”
                               basedir=/usr/local/mysql
9.把啟動腳本加入系統(tǒng)服務(wù)項,并設(shè)定開機(jī)啟動,啟動mysql

chkconfig --add mysqld
chkconfig  mysqld on 或service  mysqld  start或/etc/init.d/mysqld  start

檢查mysqld是否啟動的命令為:ps aux |grep mysqld
二、下面再搭建一個3307端口的mysql:

[root@localhost ~]#  mkdir  /data/mysql_slave
[root@localhost ~]# chown  -R  mt=ysql:mysql  /data/mysql_slave
[root@localhost ~]# cd /usr/local/
[root@localhost local]# cp -r mysql mysql_slave
[root@localhost local]# cd mysql2
[root@localhost mysql_slave]#./scripts/mysql_install_db   --user=mysql  --datadir=/data/mysql_slave
 [root@localhostmysql_slave]# cp /etc/my.cnf  .
[root@localhost mysql_slave]# vim my.cnf
【mysqld】
 改為:port = 3307  
 改為:socket = /tmp/mysql_slave.sock
在這一行的下面再加一行:
 datadir= /data/mysql_slave 

保存后就可以啟動它了:

[root@localhost mysql_slave]# cd bin/
[root@localhost bin]# ./mysqld_safe --defaults-file=../my.cnf --user=mysql &

重啟:pid=`ps aux|grep mysql2.sock|grep -v grep|awk '{print $2}'`;kill $pid;cd /usr/local/mysql2/bin/; ./mysqld_safe --default-file=../my.cnf --user=mysql &

若開機(jī)啟動,需要把啟動命令加入到/etc/rc.local中
如果想跟mysqld一樣腳本啟動,則:

[root@localhost mysql_slave]# cd /etc/init.d/
[root@localhost init.d]# cp mysqld  mysqldslave
vim mysqldslave
改datadir=/data/mysql”    為   datadir=/data/mysql_slave
   basedir=/usr/local/mysql 為   basedir=/usr/local/mysql_slave
改conf=/etc/my.cnf            為   conf=$basedir/my.cnf

也可以配置到/etc/init.d/mysqlslave

cp -r mysql mysql_slave

同樣修改

basedir=/usr/local/mysql_slave
datadir=/data/mysql_slave
conf=$basedir/my.cnf

后面的conf路徑

conf=$basedir/my.cnf

但是不能使用/etc/init.d/mysqlslave start啟動
可以使用service mysqlslave start

[root@hardman bin]# chkconfig --add mysqldslave 
[root@hardman bin]# chkconfig mysqldslave on
[root@hardman bin]# chkconfig --add mysqld
[root@hardman bin]# chkconfig mysqld on  

也可以將寫入到/etc/rc.d/rc.local文件中:

echo "./mysqld_safe --defaults-file=../my.cnf --user=mysql &" >>/etc/rc.d/rc.local

三、在主云服務(wù)器上創(chuàng)建測試數(shù)據(jù)庫:
三、在主云服務(wù)器上創(chuàng)建測試數(shù)據(jù)庫:
登錄兩臺mysql

mysql -h227.0.0.1 -P3306    #通過主機(jī)端口登陸
mysql -h227.0.0.1 -P3307    
mysql -S /tmp/mysql.sock    #通過sock登陸
mysql -S /tmp/mysql_slave.sock  
mysql -uroot  -p密碼  #通過密碼登陸

登錄mysql:/usr/local/mysql/bin/mysql -uroot  -p199610
        或mysql -S  /tmp/mysql.sock  
登錄mysql_slave:mysql -S  /tmp/mysql_slave.sock  或者mysql -h227.0.0.1 -P3307 (無密)
 
把3306端口的mysql作為主(master),而把3307的mysql作為從(slave)
為了讓實(shí)驗更加像生產(chǎn)環(huán)境,先在master上創(chuàng)建一個庫db1
[root@localhost bin]# mysql -uroot -S /tmp/mysql.sock -p199610

mysql> create database db1;
Query OK, 1 row affected (0.01 sec)

mysql> quit
Bye
// -S 后面指定mysql的socket文件路徑,這也是登陸mysql的一種方法,因為在一臺云服務(wù)器上跑了兩個mysql端口,所以,只能用 -S 這樣的方法來區(qū)分。
 
創(chuàng)建了db1庫,然后把mysql庫的數(shù)據(jù)復(fù)制給它:

mysqldump -uroot -S /tmp/mysql.sock  mysql > 123.sql     #備份 
mysql -uroot -S /tmp/mysql.sock db1 < 123.sql     #恢復(fù)
  1. 設(shè)置主master
    修改配置文件:

    vim /etc/my.cnf

    在[mysqld]部分查看是否有以下內(nèi)容,如果沒有則添加:

    server-id=1

    log-bin=mysql-bin  //可以修改為aiker等等
    除了這兩行是必須的外,還有兩個參數(shù),你可以選擇性的使用其中一個:
    #指定庫的主從

    #binlog-do-db=db1,db2

    #忽略指定庫主從,黑名單

    #binlog-ignore-db=mysql

    binlog-do-db=   #需要復(fù)制的數(shù)據(jù)庫名,多個數(shù)據(jù)庫名,使用逗號分隔。
    binlog-ignore-db=   #不需要復(fù)制的數(shù)據(jù)庫庫名,多個數(shù)據(jù)庫名,使用逗號分隔。這兩個參數(shù)其實(shí)用一個就可以
    重啟mysql服務(wù):

    /etc/init.d/mysqld restart
    ls  /data/mysql

    查看/data/mysql下,會出現(xiàn)以log-bin值文件:

    aiker.000001  

     
    設(shè)置mysql數(shù)據(jù)庫的root訪問密碼:
    設(shè)置密碼:mysqladmin -uroot -S /tmp/mysql.sock password '199610'
    登錄:mysql -uroot -S /tmp/mysql.sock -p'199610'
     

    mysql> grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123456';

    //這里的repl是為slave端設(shè)置的訪問master端mysql數(shù)據(jù)的用戶,密碼為123456,這里的127.0.0.1為slave的ip(因為我們配置的master和slave都在本機(jī))。

    mysql> flush privileges;           #刷新  
    mysql>flush tables with read lock;   #鎖定數(shù)據(jù)庫,此時不允許更改任何數(shù)據(jù)
    mysql>unlock tables;
    mysql> show master status;  #查看狀態(tài),這些數(shù)據(jù)是要記錄的,一會要在slave端用到
    +--------------+----------+--------------+------------------+
    | File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +--------------+----------+--------------+------------------+
    | aiker.000001 |      587 |              |                  |
    +--------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
  2. 設(shè)置slave
    先修改slave的配置文件my.cnf:
    vim /usr/local/mysql_slave/my.cnf

    找到 “server-id = 1” 這一行,刪除掉或者改為 “server-id = 2” 總之不能讓這個id和master一樣,否則會報錯。
    另外在從上,如下兩行,黑白名單,看主mysql有沒有配置

    replicate-do-db=db1,db2
    replicate-ignore-db=db1,db2

改完后,重啟slave:

service mysqld_slave restart

拷貝master上的db1庫的數(shù)據(jù)到slave上,因為master和slave都在一臺云服務(wù)器上,所以操作起來簡單了很多,如果是不同的機(jī)器,可能就需要遠(yuǎn)程拷貝了,希望你注意這一點(diǎn):

[root@localhost ~]# mysqldump -uroot -S /tmp/mysql.sock -pyourpassword db1 > 123.sql
[root@localhost ~]# mysql -uroot -S /tmp/mysql_slave.sock -pyourpassword -e "create database db1"
[root@localhost ~]# mysql -uroot -S /tmp/mysql_slave.sock -pyourpassword db1 < db1.sql

二行中,-e選項,它用來把mysql的命令寫到shell中,這樣可以方便把mysql操作寫進(jìn)腳本中,它的格式就是 -e "commond" 它很實(shí)用。
把數(shù)據(jù)拷貝過來后,就需要在slave上配置主從了:

mysql> slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='127.0.0.1',master_port=3306,master_user='repl', master_password='123123',master_log_file='aiker.000001', master_log_pos=587;
Query OK, 0 rows affected (0.02 sec)

mysql> slave start;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G

在主mysql上解鎖

mysql -uroot -S  /tmp/mysql_slave.sock -p123123 -e  "unlock tables"

或者

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

3、測試主從
在master上執(zhí)行如下命令:

[root@hardman bin]# mysql -uroot -S /tmp/mysql.sock -pederew -e "use db1;select count(*) from db"
+----------+
| count(*) |
+----------+
|        2 |
+----------+
[root@hardman bin]# mysql -uroot -S /tmp/mysql.sock -pederew -e "use db1;truncate table db" 清空db1的表
[root@hardman bin]# mysql -uroot -S /tmp/mysql.sock -pederew -e "use db1;select count(*) from db"   
+----------+
| count(*) |
+----------+
|        0 |
+----------+

[root@hardman ~]# mysql -S /tmp/mysql_slave.sock -e "use db1;select count(*) from db"
+----------+
| count(*) |
+----------+
|        0 |
+----------+

slave上的該表也被清空了。這樣好像不太明顯,不妨繼續(xù)把db表刪除試試:

[root@hardman ~]# mysql -S /tmp/mysql_slave.sock -e "use db1;select count(*) from db"
ERROR 1146 (42S02) at line 1: Table 'db1.db' doesn't exist

主從配置起來很簡單,但是這種機(jī)制也是非常脆弱的,一旦我們不小心在從上寫了數(shù)據(jù),那么主從也就被破壞了。另外如果重啟master,務(wù)必要先把slave停掉,也就是說需要在slave上去執(zhí)行 slave stop 命令,然后再去重啟master的mysql服務(wù),否則很有可能就會中斷了。當(dāng)然重啟完后,還需要把slave給開啟 slavestart.

看完配置MySQL Replication的詳細(xì)步驟這篇文章,大家覺得怎么樣?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

網(wǎng)頁標(biāo)題:配置MySQLReplication的詳細(xì)步驟
當(dāng)前鏈接:http://muchs.cn/article0/jpgsio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、電子商務(wù)、網(wǎng)站導(dǎo)航、云服務(wù)器、面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化