最近在看sharding-jdbc(即將發佈3.0版本,並改名Sharding-Sphere),俗話說,只看不練假把式。因此,準備在本身的雲服務上搭建一套mysql主從環境,可是迫於只有一臺雲服務器,因此只能搭建單機版的mysq一主多從。html
不常常搭建mysq服務器,只能在網上搜、參考,一搜一大把,也不知道哪一個對、哪一個錯,通過不斷嘗試,總結出了一套正確的方案,特此記錄。mysql
服務器環境c++
- centos7 64位
能夠經過rpm-qa|grep name來驗證如下軟件包是否已所有安裝sql
cmake make gcc gcc-c++ ncurses-devel bison若缺乏相關軟件包,則使用yum –y install方式安裝數據庫
建立mysq用戶vim
- 檢測mysql用戶是否存在
id mysql- 若不存在,建立
groupadd mysql useradd -r -g mysql mysql
下載安裝包centos
- 下載
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
- 解壓
tar zxvf mysql-5.6.36.tar.gz- 建立主從目錄,並拷貝文件內容
(1)建立主mysql目錄mkdir -p /usr/local/mysql-m /usr/local/mysql-m/etc /opt/database-m /var/run/mysql-m /var/log/mysql-m(2)建立從mysql目錄mkdir -p /usr/local/mysql-s /usr/local/mysql-s/etc /opt/database-s /var/run/mysql-s /var/log/mysql-s(3)複製數據到mysql主從目錄cd zxvf mysql-5.6.36 cp ./* -ir /usr/local/mysql-s/ cp ./* -ir /usr/local/mysql-m/
- 賦權限
#主庫 chown -R mysql.mysql /usr/local/mysql-m chown -R mysql.mysql /opt/database-m chown -R mysql.mysql /var/run/mysql-m chown -R mysql.mysql /var/log/mysql-m #從庫 chown -R mysql.mysql /usr/local/mysql-s chown -R mysql.mysql /opt/database-s chown -R mysql.mysql /var/run/mysql-s chown -R mysql.mysql /var/log/mysql-s
安裝 主mysqlbash
- 進入主mysql目錄
cd /usr/local/mysql-m
- 執行cmake編譯
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql-m -DMYSQL_DATADIR:PATH=/opt/database-m -DSYSCONFDIR:PATH=/usr/local/mysql-m/etc -DMYSQL_TCP_PORT=3307 -DWITH_DEBUG:BOOL=on
- 安裝
make && make install
安裝完成後,以下圖所示:
- 編輯配置文件
vim /usr/local/mysql-m/etc/my.cnf[mysql] socket=/var/run/mysql-m/mysql-m.sock [mysqld] user=mysql port=3307 basedir=/usr/local/mysql-m datadir=/opt/database-m socket=/var/run/mysql-m/mysql-m.sock pid-file=/var/run/mysql-m/mysql-m.pid [mysqld_safe] log-error=/var/log/mysql-m/mysql-m-error.log
拷貝啓動項服務器
cp /usr/local/mysql-m/support-files/mysql.server /etc/rc.d/init.d/mysql-m
編輯啓動項socket
vim /etc/rc.d/init.d/mysql-m
#修改conf=/usr/local/mysql-m/etc/my.cnf保存退出
安裝
執行/usr/local/mysql-m/scripts/mysql_install_db --basedir=/usr/local/mysql-m --datadir=/opt/database-m --user=mysql
若是沒有權限,執行下面語句:
安裝完成
啓動服務
chkconfig --add mysql-m chmod 755 /etc/init.d/mysql-m service mysql-m start
以下圖所示:
檢測是否啓動成功
lsof -i:3307
安裝 從mysql
步驟與安裝主mysql相似執行安裝完成後,如圖所示:
配置主從
主
- 修改配置文件
vim /usr/local/mysql-m/etc/my.cnf,以下圖所示
修改完成後,重啓:service mysql-m restart
注意:若是這裏只想同步一個數據庫,能夠單獨設置:binlog-do-db=dbname登陸主庫mysql,並給從受權
#重置密碼/usr/local/mysql-m/bin/mysqladmin -uroot password '123456' -S /var/run/mysql-m/mysql-m.sock#登陸
/usr/local/mysql-m/bin/mysql -uroot -p123456 -S /var/run/mysql-m/mysql-m.sock#受權給從服務器
mysql> grant replication slave on *.* jack1@localhost identified by '123456'; mysql> grant replication slave on *.* jack2@localhost identified by '123456'; mysql>flush privileges;
查看主的狀態,並記錄file和position的值,後面要用
file:mysql-bin.000001
position:120
從
- 修改配置文件
vim /usr/local/mysql-s/etc/my.cnf
修改完成後,重啓:service mysql-s restart- 登陸從庫mysql,執行同步主從操做
登陸:/usr/local/mysql-s/bin/mysql -uroot -p -S /var/run/mysql-s/mysql-s.sock
執行同步語句:change master to master_host='localhost', master_user='root', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=120, master_port=3307;
start slave;
如圖:
驗證
通過以上步驟,就安裝配置完成mysql主從配置。查看主從狀態以下圖所示:
彩蛋
若是是從遠端服務器訪問數據庫,好比阿里雲。須要登陸數據庫後設置訪問權限。
- 受權主機訪問:
MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
- 刷新權限:
MySQL>FLUSH PRIVILEGES;
- 退出:
MySQL>EXIT;
安裝部署途中,遇到的問題參考博客:mysql-5.6.27源碼安裝及錯誤解決辦法,特此鳴謝!