mysql伺服器(一)

來源:互聯網
上載者:User

標籤: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伺服器(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.