mysql主從配置

來源:互聯網
上載者:User

標籤:mysql主從配置

mysql主從配置

 

replication主從,使兩個資料庫資料保持一致

主A資料變化,產生日誌,傳送給從B,B根據日誌做相應變化,使資料與A一致。從而保持A、B資料庫保持一致

 

 

 

現實中,資料庫主從在兩台裝置上做,現為方便和節省資源,我就在同一台上做了,在兩台上做,配置類似

[[email protected] ~]# ls /usr/local/

bin/    games/   lib/     sbin/   src/

etc/    include/ libexec/ share/

[[email protected] ~]# rm -rf /usr/local/mysql             //如果安裝過資料庫,先刪除原先的

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# ls

mysql-5.1.40-linux-i686-icc-glibc23.tar.gz

[[email protected] src]# tar zxvfmysql-5.1.40-linux-i686-icc-glibc23.tar.gz

[[email protected] src]# mvmysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql

[[email protected] src]# grep "mysql"/etc/passwd

[[email protected] src]# useradd -s /sbin/nologinmysql

[[email protected] src]# cd /usr/local/mysql/

[[email protected] mysql]# ls

[[email protected] mysql]# cpsupport-files/my-small.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf‘? y

[[email protected] mysql]# vim /etc/my.cnf

[[email protected] mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld

[[email protected] mysql]# vim  /etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/data/mysql

 

 

[[email protected] mysql]# rm -rf /data/mysql             //如果之前安裝過,存在就刪除

[[email protected] mysql]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

[[email protected] mysql]# /etc/init.d/mysqldstart

[[email protected] mysql]# ps aux |grep mysql

root     3694  0.0  0.1  5060  1344 pts/2    S   21:02   0:00 /bin/sh/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql--pid-file=/data/mysql/Client.pid

mysql    3793  0.9  1.2 102904 13380 pts/2    Sl  21:02   0:00/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql--user=mysql --log-error=/data/mysql/Client.err--pid-file=/data/mysql/Client.pid --socket=/tmp/mysql.sock --port=3306

 

[[email protected] mysql]# netstat -lnp |grep3306

tcp       0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3793/mysqld

//主mysql安裝成功,並啟動了

 

 

現安裝第二個mysql,從mysql。

[[email protected] mysql]# cd ..

[[email protected] local]# ls

[[email protected] local]# cp -r mysqlmysql_slave

[[email protected] local]# cd mysql_slave/

[[email protected] mysql_slave]# cp /etc/my.cnf .              //設定檔拷貝到目前的目錄

[[email protected] mysql_slave]# pwd

/usr/local/mysql_slave

[[email protected] mysql_slave]# vim my.cnf

[mysqld]

port            = 3307

socket          = /tmp/mysql_slave.sock

datadir         = /data/mysql_slave

 

[[email protected] mysql_slave]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_slave

[[email protected] mysql_slave]# ls/data/mysql_slave/

mysql test

[[email protected] mysql_slave]# cd /etc/init.d/

[[email protected] init.d]# cp mysqld mysqldslave

basedir=/usr/local/mysql_slave

datadir=/data/mysql_slave

conf=/etc/my.cnf 改成conf=$basedir/my.cnf

[[email protected] init.d]#/etc/init.d/mysqldslave start

[[email protected] init.d]# ps aux |grep mysql

[[email protected] init.d]# netstat -lnp |grepmysql

tcp    0   0 0.0.0.0:3306          0.0.0.0:*            LISTEN      3793/mysqld

tcp    0    0 0.0.0.0:3307        0.0.0.0:*             LISTEN     4105/mysqld

//兩個mysql都已啟動

 

 

 

 

現在配置主從,主3306,從3307

[[email protected] init.d]# cd

[[email protected] ~]# mysql                      //如無該命令可用/usr/local/mysql/bin/mysql

-bash: mysql: command not found

[[email protected] ~]# /usr/local/mysql/bin/mysql

mysql> quit

Bye

[[email protected] ~]# vim /etc/profile.d/path

export PATH=$PATH:/usr/local/mysql/bin

[[email protected] ~]# source !$

source /etc/profile.d/path

 

[[email protected] ~]# mysql                         //預設登入3306的

mysql> quit

[[email protected] ~]# mysql -S /tmp/mysql.sock         //登入3306的

mysql> quit

[[email protected] ~]# mysql -S /tmp/mysql_slave.sock       //登入3307的

mysql> quit

[[email protected] ~]# mysql -h127.0.0.1 -P3307            //登入指定監聽連接埠的

 

[[email protected] ~]# mysql                //登入主的

mysql> create database db1;            //建立一個表

mysql> quit

[[email protected] ~]# mysqldump -S/tmp/mysql.sock mysql>123.sql     //拷貝一個庫到檔案

[[email protected] ~]# vim 123.sql                                 //查看

[[email protected] ~]# mysql -S /tmp/mysql.sockdb1 <123.sql          //將檔案拷貝到庫

[[email protected] ~]# mysql

mysql> use db1;

mysql> show tables;                                       //庫已拷貝

mysql> quit

 

[[email protected] ~]# vim /etc/my.cnf

server-id       = 1                           //確保與從上server-id不同

log-bin=wang                                //自訂log-bin

#binlog-do-db=db1,db2               //只針對db1,db2做主從(去掉注釋生效)

#binlog-ignore-db=mysql              //無需做主從的庫(去掉注釋生效)

 

[[email protected] ~]# /etc/init.d/mysqld restart

[[email protected] ~]# ls /data/mysql

wang.index wang.000001      // log-bin檔案

[[email protected] ~]# mysql

mysql> grant replication slave on *.* to‘repl‘@‘127.0.0.1‘ identified by ‘123123‘;       

 //設定許可權

mysql> flush privileges;                //重新整理

mysql> flush tables with read lock;       //鎖死,讀

mysql> show master status;            //查看

+-------------+----------+--------------+------------------+

| File        | Position | Binlog_Do_DB |Binlog_Ignore_DB |

+-------------+----------+--------------+------------------+

| wang.000001|      315|              |                  |

+-------------+----------+--------------+------------------+

從上:

[[email protected] ~]# vim /usr/local/mysql_slave/my.cnf

server-id       = 111                   //設定成與主不同

[[email protected] ~]# ls

123.sql

[[email protected] ~]# mysql -S/tmp/mysql_slave.sock -e "create database db1";

//從上建立庫db1

[[email protected] ~]# mysql -S/tmp/mysql_slave.sock db1 <123.sql;

//匯入庫

[[email protected] ~]# mysql -S/tmp/mysql_slave.sock      //登入從

mysql> slave stop;

mysql> change master to master_host=‘127.0.0.1‘,master_port=3306, master_user=‘repl‘, master_password=‘123123‘,master_log_file=‘wang.000001‘, master_log_pos=315;

 

// master_log_file=‘wang.000001‘,master_log_pos=315;值為mysql> show master status;中看到的

 

mysql> slave start;

mysql> show slave status\G;

Slave_IO_Running: No

Slave_SQL_Running: Yes

//兩項值都為Yes表示配置成功,現配置還未正確

 

mysql> slave stop;

[[email protected] ~]# /etc/init.d/mysqldslaverestart

[[email protected] ~]# mysql -S/tmp/mysql_slave.sock

mysql> slave start;

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

//兩項都為yes.配置成功了

 

 

驗證測試:

主上

[[email protected] ~]# mysql

mysql> unlock tables;

mysql> use db1;

mysql> show tables;

help_category

mysql> drop table help_category;          //刪除該表

 

 

 

[[email protected] ~]# mysql -S/tmp/mysql_slave.sock

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

mysql> use db1;

mysql> show tables;

無help_category表,主上刪除後,從上同步

 

注意:主從機制不能在從上做操作

 

 

主上:

mysql> drop database db1;

mysql> show database;

 

從上:

mysql> show databases;

db1也被刪除

 

 

實際現實中,主從很容易出現故障,可監控兩個yes的值,判讀主從是否正常

 


本文出自 “Linux學習筆記” 部落格,請務必保留此出處http://9656134.blog.51cto.com/9646134/1678114

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.