MySQL安裝
- 添加 MySQL Yum Repository
sudo yum -y localinstall http://mirrors.d.com/software/mysql/5.7/mysql57-community-release-el7-11.noarch.rpm
- 默認是最新版5.7版本的mysql,需要安裝5.6版本,所以修改
/etc/yum.repos.d/mysql-community.repo
文件缨历,修改對應版本的enabled字段,如下
[mysql57-community]
enabled=0
[mysql57-community]
enabled=1
- 安裝
sudo yum -y install mysql-community-server
糙麦,啟動sudo service mysqld start
辛孵,驗證安裝是否成功mysqladmin --version
- 設置默認root的用戶密碼
mysqladmin -u root password "123456";
,登錄mysql -u root -p
- 添加用戶及權限
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'username'@'%' IDENTIFIED BY 'password';
赡磅,其中%表示所有客戶端ip可連接觉吭,可指定IP可連接。也可以直接操作mysql數據庫下的user表管理用戶仆邓。
Mysql備份
- 開啟
binlog
日志
vim /etc/my.cnf
log_bin=mysql-bin
binlog_format=row
- 常用操作
mysql> show master logs; #查看數據庫所有日志文件鲜滩。
mysql> flush logs; #將內存中l(wèi)og日志寫磁盤,保存在當前binlog文件中节值,并產生一個新的binlog日志文件徙硅。
mysql> reset master; #刪除所有二進制日志,在(mysql-bin.000001)開始記錄搞疗。
mysqldump --all-databases > dump.sql
mysqldump --databases db1 db2 db3 > dump.sql
xtrabackup備份
- 1嗓蘑、安裝
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install percona-xtrabackup-24
yum -y install perl-DBD-MySQL.x86_64
- 2须肆、創(chuàng)建備份用戶
mysql> grant reload,lock tables,replication client on *.* to 'backup'@'localhost' identified by '123456';
mysql> grant process on *.* to backup@'localhost';
mysql> flush privileges;
-
3、全量物理備份
- 生成當前時間戳命名的備份文件
innobackupex --user=backup --password=123456 /data/mysql/backup
- 讓備份文件準備桩皿,備份文件不能直接用于恢復豌汇,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務,此時數據文件處于不一致的狀態(tài)泄隔。因此拒贱,我們現在就是要通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處于一致性狀態(tài)。
innobackupex --user=backup --password=123456 --apply-log /data/mysql/backup/2017-11-24_14-11-17
- 將mysql的數據目錄鏈接到這個已經恢復的備份目錄佛嬉,或直接用copy-back拷貝至mysql數據目錄
systemctl stop mysqld mv mysql mysql.old ln -s /data/mysql/backup/2017-11-24_14-11-17/ /var/lib/mysql chown mysql:mysql /var/lib/mysql chown -R mysql:mysql /data/mysql/backup/* systemctl start mysqld #重啟mysql即可 恢復
4逻澳、增量備份
#全備
innobackupex --user=backup --password=123456 /data/mysql/backup
#第一次增量備份
innobackupex --user=backup --password=123456 --incremental /data/mysql/backup/inc --incremental-basedir=/data/mysql/backup/2017-11-24_14-11-17/
#第二次增量備份
innobackupex --user=backup --password=123456 --incremental /data/mysql/backup/inc --incremental-basedir=incremental /data/mysql/backup/inc/2017-11-24_14-18-35
#恢復
innobackupex --apply-log --redo-only ~/data/mysql/backup/full/2017-11-24_16-29-09/
## 注意每次恢復后設置 備份文件的mysql用戶權限
innobackupex --apply-log --redo-only /data/mysql/backup/full/2017-01-20_10-52-43 --incremental-dir=/data/mysql/backup/inc/2017-01-20_11-04-31
shell 腳本
- mysql和xtrabackup安裝
##### mysql 安裝 默認5.7
yum -y install http://mirrors.d.com/software/mysql/5.7/mysql57-community-release-el7-11.noarch.rpm
#echo "#### install mysql:默認安裝最新版5.7, 若需要之前版本需要修改/etc/yum.repos.d/mysql-community.repo 中對應版本的enabled值"
yum -y install mysql-community-server
mysqladmin --version
# deta目錄 /var/lib/mysql
if [ ! -d /var/lib/mysql ]; then
echo install mysql failed
exit 0;
fi
service mysqld start
###### mysql 設置
#設置 root 密碼 123456
mysqladmin -u root password "123456";
#允許所有客戶端訪問
##mysql -uroot -p123456 -D mysql -e "update user set Host='%' where User='root' and Host='127.0.0.1';"
# Grant all on *.* to 'root'@'%' identified by 'password' with grant option;
mysql -uroot -p123456 -e "Grant all on *.* to 'root'@'%' identified by 'password' with grant option;"
#創(chuàng)建備份用戶 backup 123456
mysql -uroot -p123456 -e "grant reload,lock tables,replication client ,process on *.* to 'backup'@'localhost' identified by '123456';"
mysql -uroot -p123456 -e ' flush privileges;'
mysql -uroot -p123456 -D mysql -e 'select host,user from user;'
#xtrabackup安裝
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum -y install percona-xtrabackup-24
#yum -y install perl-DBD-MySQL.x86_64
- 備份腳本暖呕,定時執(zhí)行
#!/bin/bash
# mysql備份文件斜做,該文件每天執(zhí)行,每周一全備湾揽,每天基于本周一的全備做增量備份
#全備最近四周瓤逼,增備最近七天
# crontab -e
# 00 03 * * 1 /data/mysql/backup/backup.sh
backupfull_dir='/data/mysql/backup/full'
backupinc_dir='/data/mysql/backup/inc'
username='backup'
password='123456'
#需要在備份服務器上對備份文件定期刪除處理
backup_host='10.0.12.59'
last4week_day=`date -d -4weeks '+%Y-%m-%d'`
week_day=`date +%w`
lastmon_day=`date -d "last Mon" +"%Y-%m-%d"`
today=`date +%Y-%m-%d`
# Every Monday full back
if [ $week_day == 1 ]; then
#周一刪除四周前的基礎備份,新增基礎備份
rm -rf ${backupfull_dir}/${last4week_day}*
ulimit -n 65535 && innobackupex --user=$username --password=$password $backupfull_dir
#備份文件傳到其他服務器
if [ $backup_host ]; then
new_full=`ls ${backupfull_dir} |grep $today`
#tar czvf ${new_full}.tar $new_full
cd $backupfull_dir && tar -cf - ${new_full} | pigz > ${new_full}.tgz
rsync -rl ${new_full}.tar root@10.0.12.59:/data/mysql/backup/full
rm -rf ${new_full}.tar
fi
fi
#每天增量備份库物,基于周一的全備
full_dir=`ls ${backupfull_dir} |grep $lastmon_day`
if [ $full_dir ]; then
ulimit -n 65535 && innobackupex --user=$username --password=$password --incremental $backupinc_dir --incremental-basedir=${backupfull_dir}/${full_dir}
#備份文件傳到其他服務器
if [ $backup_host ]; then
new_inc=`ls ${backupinc_dir} |grep $today`
#tar czvf ${new_inc}.tar $new_inc
cd $backupinc_dir && tar -cf - ${new_inc} | pigz > ${new_inc}.tgz
rsync -rl ${new_inc}.tar root@10.0.12.59:/data/mysql/backup/inc
rm -rf ${new_inc}.tar
fi
fi
#刪除 一周之前的增量備份
find $backupinc_dir -maxdepth 1 -mtime +7 | xargs rm -rf
mariadb安裝
- yum源
#vim /etc/yum.repo.d/MariaDB.repo
# MariaDB 10.1 CentOS repository list - created 2016-12-01 03:36 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
#yum clean all
#yum makecache
安裝
sudo yum -y install MariaDB-server MariaDB-client
使用
mysql_secure_installation
配置MariaDB服務
#由于一開始安裝MariaDB數據庫后, root用戶默認密碼為空, 所以只需要按Enter鍵
Enter current password for root (enter for none):
#是否設置root用戶的新密碼
Set root password? [Y/n] y
#錄入新密碼
New password:
#確認新密碼
Re-enter new password:
#是否刪除匿名用戶,生產環(huán)境建議刪除
Remove anonymous users? [Y/n] y
#是否禁止root遠程登錄,根據自己的需求選擇
Disallow root login remotely? [Y/n] n
#是否刪除test數據庫
Remove test database and access to it? [Y/n] y
#是否重新加載權限表
Reload privilege tables now? [Y/n] y
用戶配置霸旗,遠程訪問設置同mysql
MariaDB的日志在
/etc/logs/messages
[mysqld]
datadir=/data/mysql_test #修改默認路徑
socket=/data/mysql_test/mysql.sock
#default-character-set=utf8
character_set_server=utf8
slow_query_log=on
slow_query_log_file=/data/mysql_test/slow_query_log.log
#long_query_time=2
mysql_install_db --user=mysql --basedir=/usr --datadir=/data/mysql_test/