標籤:mysql伺服器(一)
mysql伺服器
1、mysql安裝
版本:mysql-advanced-5.6.23-linux-glibc2.5-x86_64
具體可以參考目錄下的INSTALL-BINARY檔案
#安裝mysql,將mysql壓縮解壓到/usr/local
tar zxvf mysql-advanced-5.6.23-linux-glibc2.5-x86_64.tar.gz -C /uar/local/mysql
cd /usr/local
ln -s mysql-advanced-5.6.23-linux-glibc2.5-x86_64 mysql
cd mysql
#添加mysql使用者和群組
groupadd mysql
useradd -r -g mysql mysql
#修改相關目錄和檔案屬主和所屬群組
chown -R mysql .
chgrp -R mysql .
或者:chown -R mysql:mysql .
#將目錄屬主更改為root,避免mysql使用者將目錄刪除
chown -R root .
chown -R mysql data
#使用mysql使用者權限來初始化資料庫
scripts/mysql_install_db --user=mysql --datadir=/data --keep-my-cnf --no-defaults
#會提示缺少perl-modules
#FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db
yum -y install perl-Module-Install.noarch
#缺少依賴包libaio
#error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
yum -y install libaio-devel
#將mysql添加為服務
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
#將mysql的bin目錄加入到PATH環境變數
#在/etc/profile最後面添加
PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
#指令碼初始化已經添加mysqld指令碼,如果沒有直接cp /etc/init.d/mysqld
/etc/rc.d/init.d/mysqld
#啟動mysql
/usr/local/mysql/bin/mysqld_safe &
#更改mysql root密碼提示
#error: ‘Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
/usr/local/mysqladmin -u root -p password --socket=/var/lib/mysql/mysql.sock
#或者
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
#在/etc/my.cnf 檔案socket參數指定為/tmp/mysql.sock
socket=/tmp/mysql.sock
#啟動mysql
mysqld_safe --defaults-file=/etc/my.cnf --datadir=/data --pid-file=/tmp/mysql.pid&
#查看mysql啟動情況
ps aux | grep mysql
#查看mysql是否在監聽連接埠3306
lsof i:3306
#
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1Vytx6AV8JrAAE3nOWUY38452.jpg" />
#mysql已經啟動成功
2、基本配置
#待補充
3、Database Backup和還原
(1)添加從伺服器複製使用者
#給192.168.137.31這台主機以使用者名稱slave和密碼love從主伺服器進行同步複製
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1VyuL7Cnf0kAABr4rDcOR0053.jpg" />
#遠端連線錯誤
#ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.137.30‘ (113)
#查看錯誤113
perrot 113
#由於啟用防火牆所致,centos7防火牆預設是firewalld
systemctl stop firewalld.service
systemctl disable firewalld
#關閉開啟防火牆前後650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/12/wKiom1Vytx_g9eMvAAEeH4H7c7I649.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0E/wKioL1VyuL-yJImnAAFn0oynl0I700.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/12/wKiom1VytyCSrzedAAIRD0wfji4256.jpg" />
(2)完全備份與還原
#預設資料庫:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0E/wKioL1VyuMCy3cYRAACSBBkK7EA346.jpg" />
#建立資料庫d1和d2以及表t1和t2。
create database d1;
create database d2;
use d1;
create table t1(id int,name char(50));
insert into t1 value(1,‘t1name1‘);
insert into t1 value(2,‘t1name2‘);
use d2;
create table t2(id int,name char(50));
insert into t2 value(1,‘t2name1‘);
insert into t2 value(2,‘t1name2‘);
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/12/wKiom1VytyDjv7vJAACY3SJGggA122.jpg" />
#備份資料庫d1和d2表資料,-l會將所有表鎖定,備份完成自動解鎖,-F備份完成會重建binlog日誌:
mysqldump -l -F -u root -p d1 >data/d1.sql
mysqldump -l -F -u root -p d2 >data/d2.sql
#備份所有資料庫,包括內建的資料庫:
mysqldump --all-databases -l -F -u root -p >data/all.sql
#還原到從伺服器:
scp data/d*.sql [email protected]:/usr/local/mysql/data
#在從伺服器執行:
mysql -u root -p
create database d1;
create database d2;
use d1;
source /usr/local/mysql/data/d1.sql
use d2;
source /usr/local/mysql/data/d2.sql
(3)binlog還原資料
#待補充
4、主從複製
(1)從5.1.7版本開始不支援參數
#5.1.7版本開始不支援master-host、master-user、master-password等參數,在配置從伺服器時注意需要在從伺服器執行:
change master to master_host=‘主伺服器IP‘,master_user=‘同步使用使用者名稱(slave)‘,master_password=‘同步處理的使用者對應密碼(love)‘;
start slave;
(2)binlog記錄檔操作
#重建binlog日誌,假如當前binlog日誌為mysql-bin.000004,新產生的binlog日誌就是mysql-bin.000005
flush logs;
#重設binlog日誌,即binlog日誌會從原點開始記錄,如雙從mysql-bin.000001開始
reset master;
#查看slave狀態
show slave status\G;
#可以使用mysqlbinlog來查看binlog日誌
mysqlbinlog /data/mysql-bin.000004
(3)配置從伺服器
#安裝方法與主伺服器一樣,不重複說明。
#修改root密碼
mysqladmin -u root -p password
change master to master_host=‘192.168.137.30‘,master_user=‘slave‘,master_password=‘love‘;
start slave;
show slave status\G;
#由於之前做了從伺服器中複製,並且重設了主和從伺服器binlog日誌,所以需要以下操作
#在主伺服器重設binlog日誌,生產環境切勿隨便重設binlog日誌,重設之後會刪除起點之後的所有記錄檔
#為方便查看同步效果,如果主伺服器已經手動建立過資料庫的,應該將它刪除,若不刪除又不把手動建立的
#Database Backup還原到從伺服器,當在主伺服器對這些資料庫進行增刪修時,從伺服器由於沒有這些資料庫,就會報錯
#將測試資料庫刪除,並重設記錄檔
drop database d1;
drop database d2;
reset master;
#查看主伺服器log_pos位置起點,以便在從伺服器設定同步起點,
show master status;
#起點變成120
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0E/wKioL1VyuMCSmQv7AADW5rvOKU8464.jpg" />
#從伺服器
#設定檔
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/12/wKiom1VytyKRJQAZAAHB8Oc9Og0129.jpg" />
server_id:必須唯一
replicate-do-db:指定需要同步的資料庫,一個資料庫一行
replicate-ignore-db:指定不需要同步的資料庫,一個資料庫一行
#重設從伺服器日誌並開啟複製
reset master;
stop slave;
change master to master_host=‘192.168.137.30‘,master_user=‘slave‘,master_password=‘love‘;
start slave;
#看到Slave_IO_Running和Slave_SQL_Running狀態顯示為Yes,可以看出與主伺服器串連正常
Slave_IO_Running:負責從主伺服器將binlog複製到本地,YES表示複製狀態正常,NO表示複製狀態不正常或者是無法從主伺服器複製。
Slave_SQL_Running:負責從複製到本地的binlog日誌中讀取positon點和sql語句並執行一遍,並且會將自身動作記錄寫入到relaylog中繼日誌中。
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
#從伺服器正等待主伺服器進行增、刪、修操作,一旦主伺服器進行這些操作,從伺服器在重新整理時間內就會根據從主伺服器的binlog來同步資料
#Replicate_Ignore_DB顯示的是忽略同步的資料庫
Replicate_Ignore_DB: mysql,test,information_schema,ignoredb
#需要在my.cnf設定檔添加,一行指定一個資料庫
replicate-ignore-db=mysql
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=ignoredb
#將複製事件寫入到自己的二進位記錄檔,中繼日誌和自己binlog日誌預設值開啟並且存放在/var/lib/mysql
log-slave-updates
#資料庫存放位置可以通過datadir參數來更改
datadir=/data
#日誌存放位置可以通過log-bin參數加上絕對路徑來修改
log-bin=/binlog/mysql-bin
#如果在啟動過mysql之後再修改資料目錄存放路徑,要先將pid檔案、中繼記錄檔和資料庫檔案複製到修改後目錄,不然在啟動mysql總會提示找不到pid檔案,而無法啟動成功,一般都會將binlog檔案和資料庫檔案分開,避免因磁碟損壞而無法使用binlog恢複資料
#在主伺服器上重建立立資料庫d1和d2以及t1和t2,可以在從伺服器看到很快就會將這兩個資料庫同步過來
本文出自 “愛就行動” 部落格,請務必保留此出處http://1055745601.blog.51cto.com/5003160/1659226
mysql伺服器(一)