MySQL安裝部署及調優

MySQL安裝

二進制安裝 - mysql-5.5.49mysql

mkdir /home/oldboy/tools -p
cd /home/oldboy/tools/
rz
#mysql-5.5.49-linux2.6-x86_64.tar.gz
tar -xf mysql-5.5.49-linux2.6-x86_64.tar.gz
mv mysql-5.5.49-linux2.6-x86_64 /application/mysql-5.5.49
    useradd -s /sbin/nologin mysql -M
ln -s /application/mysql-5.5.49/ /application/mysql
cd /application/mysql
/bin/cp support-files/my-small.cnf /etc/my.cnf
chown -R mysql.mysql /application/mysql/
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld 
sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld 
/etc/init.d/mysqld start
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile
mysqladmin -u root password '123456'
lsof -i:3306

MySQL基本操做

shell界面下命令:

啓動:/etc/init.d/mysqld startlinux

中止:/etc/init.d/mysqld stopsql

重啓:/etc/init.d/mysqld restartshell

登錄:mysql -u帳號 -p密碼數據庫

設置密碼:mysqladmin -u root password '新密碼'vim

mysql界面下命令:

清理無用的MySQL用戶及庫app

select user,host from mysql.user
drop user "root@::1";

刪除無用數據庫ssh

drop database test;
show database test;

查看當前全部的數據庫ide

show databases;

查看當前的登錄用戶測試

select user();

MySQL優化

mysql相關命令加入全局路徑的配置

方法一:
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile
方法二:
ln -s /application/mysql/bin/* /usr/local/sbin/

多實例

mkdir /data/{3306,3307}/data -p
多實例配置文件模板 : ls -l support-files/my*.cnf
編輯多實例配置文件 : vim /data/3306/my.cnf
			        vim /data/3307my.cnf
建立啓動文件 : vim /data/3306/mysql
			   vim /data/3307mysql

啓動多實例:

mysqld_safe--defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe--defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

中止多實例:

mysqladmin -u root -p密碼 -S /data/3306/mysql.sock shutdown
mysqladmin -u root -p密碼 -S /data/3307/mysql.sock shutdown

初始化mysql多實例數據庫文件

cd /application/mysql/scripts
./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql

啓動\登錄\重啓多實例多實例數據庫

啓動

/data/3306/mysql start
/data/3307/mysql start

中止

/data/3306/mysql stop
/data/3307/mysql stop

重啓

/data/3306/mysql stop
/data/3307/mysql stop

開機自啓動

echo "#mysql multi instance" >>/etc/rc.local
echo "/data/3306/mysql start" >>/etc/rc.local
echo "/data/3307/mysql start" >>/etc/rc.local

登錄多實例數據庫

mysql -S /data/3306/mysql.sock

設置/修改多實例數據庫密碼

mysqladmin -u root -S /data/3306/mysql.sock password '密碼'
mysql -uroot -p密碼 -S /data/3306/mysql.sock

實例的密碼存放在/data/3306/mysql文件中,需修改權限爲700,防止密碼被其餘用戶看到
find /data -type f -name "mysql" -exec chmod 700 {} \;
修改實例密碼:sed -i '13 s#舊密碼#新密碼#g' /data/3306/mysql /data/3307/mysql

禁止使用pkill、kill -九、killall -9等命令強制殺死數據庫,這會引發數據庫沒法啓動等故障的發生

MySQL主從複製

MySQL的主從複製並非數據庫磁盤上的文件直接拷貝,而是Master上開啓binlog記錄功能,Slave從Master端獲取binlog日誌,而後再在Slave上以相同順序執行獲取的binlog日誌中所記錄的各類SQL記錄。

開啓binlog

[mysqld]
log-bin = /data/3006/mysql-bin

實戰 主從同步 <3306爲主,3307爲從>

開啓Master的binlog功能

vim /data/3306/my.cnf

[mysqld]
server-id = 1
log-bin = /data/3006/mysql-bin

/data/3306/mysql restart

登錄數據庫檢查參數是否生效

egrep "server-id|log-bin" /data/3306/my.cnf

mysql -uroot -p'密碼' -S /data/3306/mysql.sock

show variables like 'server_id';
show variables like 'log_bin';

在主庫上創建用於主從複製的帳號

mysql -uroot -p'密碼' -S /data/3306/mysql.sock

grant replication slave on *.* to 'rep'@'10.0.0.%' identified by '密碼';
flush privileges;

檢查建立的rep複製帳號

select user,host from mysql.user;
select user,host from mysql.user where user='rep';
MySQL權限說明:

實現對主數據庫鎖表只讀

鎖表只讀,而後mysqldump出數據庫,而後再解鎖

flush table with read lock;
show variables like '%timeout%';

顯示信息記錄在案

show master status;
或mysql -u root -p '密碼' -S /data/3306/mysql.sock -e "show master status"

鎖表後,必定要新開ssh窗口,再導出數據庫全部數據

mkdir /server/backup -p
mysqldump -uroot -p密碼 -S /data/3306/mysql.sock --events -A -B|gzip >/server/backup/mysql_bak.$(date +%F).sql.gz

從庫編輯my.cnf文件,添加server-id(id號不能和主同樣),註釋掉binlog功能,重啓從數據庫

將導出的數據庫發送到從庫上導入(能夠用scp、rsyn)

gzip -d mysql_bak.2017-01-01.sql.gz
mysql -uroot -p'密碼' -S /data/3307/mysql.sock < mysql_back.2017-01-01.sql

從庫鏈接主庫配置信息

mysql -uroot -p'密碼' -S /data/3307/mysql.sock << EOF
CHANGE MASTER TO
MASTER_HOST='10.0.0.7'
MASTER_PORT='3306'
MASTER_USER='rep'
MASTER_PASSWORD='密碼'
MASTER_LOG_FILE='mysql-bin.000008'
MASTER_LOG_POS=342

啓動從庫同步開關

mysql -uroot -p密碼 -S /data/3307/mysql.sock -e "start slave;"
mysql -uroot -p密碼 -S /data/3307/mysql.sock -e "show slave status;"

測試

主庫上建立個帳號
mysql -uroot -p密碼 -S /data/3306/mysql.sock -e "create database testtest;"
從庫上查看
mysql -uroot -p密碼 -S /data/3307/mysql.sock -e "show databases like 'testtest';"
相關文章
相關標籤/搜索