天天看點

mysql主從環境搭建

mysql主從環境:

主伺服器ip:192.168.199.12     主機名 master

從伺服器ip:192.168.199.10   主機名 slave

系統為:centos 6.5  64位

mysql 5.1.73 64位

sestatus檢查

1、關閉防火牆

2、關閉selinux

1.建立安裝目錄與資料存放目錄

mkdir /opt/mysql

mkdir /opt/mysql/data

2.建立mysql使用者與組

 useradd mysql

id mysql 

uid=500(mysql) gid=500(mysql) 組=500(mysql)

3.授權安裝目錄與資料目錄

# chown -r mysql.mysql /opt/mysql/ 

# chown -r mysql.mysql /opt/mysql/data

4.安裝mysql 依賴包

yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl*  make cmake gcc gcc-c++ ncurses ncurses-devel

下載下傳mysql資料庫

$ wget http://cdn.mysql.com/downloads/mysql-5.1/mysql-5.1.73.tar.gz

tar -vzxf mysql-5.1.73.tar.gz

進入mysql安裝路徑

/opt/mysql

cd mysql-5.1.73

./configure --prefix=/opt/mysql/ --with-charset=utf8 --with-extra-charsets=gbk,utf8,ascii,big5,latin1,binary --with-unix-socket-path=/opt/mysql/tmp/mysql.sock --with-mysqld-user=mysql 

make && make install

初始化資料庫

修改配置檔案和啟停腳本

cd /opt/mysql

mkdir etc log tmp var

使他們具有mysql的權限。

chown -r mysql.mysql etc log tmp var

cp share/mysql/my-medium.cnf  etc/my.cnf

cp share/mysql/mysql.server  bin/

vim etc/my.cnf

在【mysqld】下添加配置項

basedir = /opt/mysql

datadir = /opt/mysql/var

tmpdir = /opt/mysql/tmp

slave-load-tmpdir = /opt/mysql/tmp

pid-file = /opt/mysql/var/mysql.pid

#skip-name-resolve

#skip-symbolic-links

max_connect_errors = 10000

max_connections = 500

wait-timeout = 30

啟動資料庫

root使用者

./bin/mysql_install_db --user=mysql  #安裝資料庫檔案

 ./bin/mysql.server start    #出現下面這行說資料庫啟動ok了

root使用者啟動

# /opt/mysql/bin/mysql.server start

starting mysql.    

上午剛裝完mysql,啟動時報如下錯誤:

starting mysql.manager of pid-file quit without updating file.[failed]

解決:

/opt/mysql/bin/mysql_install_db --user=mysql

配置mysql使用者

使用./bin目錄下的mysql指令可以登入到資料庫,登入後删除匿名使用者并且為root設定密碼:

$ mysql -u root

> delete from mysql.user where user='';

> update mysql.user set password = password('password') where user='root';

按照以上同樣的步驟再搭建一個mysql,注意,如果在同一主機搭建多個mysql執行個體,那麼就需要将端口改成不同才行。

檢視一下mysql版本

show variables like '%version_%';

mysql> show variables like '%dir%';

首先在主庫建立專門用于同步的資料庫賬号sync

grant replication slave on *.* to 'sync'@'%' identified by 'jsb';

主庫配置

所有的配置項還是在my.cnf中的[mysqld]下添加。

首先server-id作為mysql伺服器的辨別,具有相關聯上下遊同步系統需具有全局唯一性。主庫我們将server-id配置為1。其他主庫需要添加的配置有:

server-id=1

# 同步過程中需要忽略的表,支援正規表達式。全庫同步時,必須屏蔽mysql系統庫和test測試庫。

replicate-wild-ignore-table = mysql.%

replicate-wild-ignore-table = test.%

# 需要同步的表,多個表需多次指定,這裡我們使用全庫同步,友善點

# replicate-do-table = database.table

log-bin = mysql-bin  #二進制日志,強制開啟

log-bin-index = mysql-bin.index  # 記錄二進制日志索引檔案

relay-log-index = relay-log.index # 記錄中繼日志索引檔案

從庫配置

server-id=2

read-only 

skip-slave-start 

relay-log = mysql-relay 

relay-log-index = relay-log.index

log-bin = mysql-bin

log-bin-index = mysql-bin.index

同步設定

啟動資料庫并檢視主庫狀态

su - mysql 

$ /opt/mysql/bin/mysql.server start

starting mysql success! 

$ mysql -uroot -p

-bash: mysql: command not found

[mysql@localhost ~]$ /opt/mysql/bin/mysql -uroot

 mysql> show master status;

記錄下 mysql-bin 和pid

記下log檔案名字和位置,這裡是“mysql-bin。000004” 和 “465”

然後啟動從庫:

[root@localhost bin]# su - mysql

[mysql@localhost ~]$ /opt/mysql/bin/mysql.server start

mysql> change master to master_host='192.168.199.126',master_port=3306,master_user='sync',master_password='jsb',master_log_file='mysql-bin.000006',master_log_pos=465;

mysql> start slave;  #啟動從庫

mysql> show slave status\g;

其中slave_io_running和slave_sql_running是yes就對了。

最後,可以驗證一下,在主庫修改記錄,從庫可以看到同步過來的變化。

如果顯示以下2個yes,則為配置成功:

slave_io_running: yes   #負責從庫去主庫讀取binlog日志,并寫入從庫的中繼日志中

slave_sql_running: yes  #負責讀取并執行中繼日志中的binglog,轉換sql語句後應用到資料庫彙總