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語句後應用到資料庫彙總