linux练习题十五

一、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。

BACKUPDIR="/data"
USERNAME=yanwei
PASSWORD=centos
DATE=`date +%F-%T`
mainmenu (){
cat << EOF

1)mysqldump
2)xtraback
3)quit
EOF
while read -p "Please choose a backup method:" BAKME;do
case $BAKME in
1)
    submenu
    ;;
2)
    [[ -d $BACKUPDIR/xtrabackup/$DATE ]] || mkdir -pv $BACKUPDIR/xtrabackup/$DATE &> /dev/null
    xtrabackup --user=$USERNAME --password=$PASSWORD --backup \
--target-dir=$BACKUPDIR/xtrabackup/$DATE &>/dev/null \
    && echo "mysql is backup success"
    exit
    ;;
3)
    exit
    ;;
*)
    echo "please input again"
esac
done
}

submenu () {
cat <<EOF

1)Innodb
2)MyISAM
3)quit
EOF
    while read -p "Please choose an engine for mysql:" ENGINE;do
    case $ENGINE in
    1)
        [[ -d $BACKUPDIR/mysqldump/ ]] || mkdir -pv $BACKUPDIR/mysqldump/ &> /dev/null
        mysqldump -u$USERNAME -p$PASSWORD -A -F -E -R -q \
--single-transaction --master-data=1 --flush-privileges \
--triggers --default-character-set=utf8 \
--hex-blob | gzip > $BACKUPDIR/mysqldump/fullbak_$DATE.sql.gz \
&& echo "mysql is backup success"
        submenu
        ;;
    2)
        [[ -d $BACKUPDIR/mysqldump/ ]] || mkdir -pv $BACKUPDIR/mysqldump/ &> /dev/null
        mysqldump -u$USERNAME -p$PASSWORD –A –F –E –R –x -q \
--master-data=1 --flush-privileges \
--triggers --default-character-set=utf8 \
--hex-blob | gzip > $BACKUPDIR/mysqldump/fullbak_$DATE.sql.gz \
&& echo "mysql is backup success"
        submenu
        ;;
    3)
        mainmenu
        ;;
    *)    
        echo "please input again"
    esac
    done
}

mainmenu

 

 

 

二、配置Mysql主从同步

yum install -y mariadb-server
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation

1 主服务器
yum install -y mariadb-server    #安装数据库
systemctl start mariadb.service    #启动服务
systemctl enable mariadb.service    #设置开启启动
mysql < hellodb_innodb.sql    #导入测试数据库
mysql_secure_installation    #执行安全初始化脚本

#修改配置文件
vim /etc/my.cnf
server-id=1
log-bin=/data/logbin/mysql    #开启二进制日志
mkdir /data/logbin
chown -R mysql.mysql /data/logbin
systemctl restart mariadb.service

#创建从节点同步账户
mysql> grant replication slave on *.* to repluser@'192.168.36.%' identified by  'centos';
#全量备份主节点数据
mysqldump -uroot -pcentos -A --single-transaction --master-data=1  -F > /data/all.sql
#备份数据传到从节点
scp /data/all.sql 192.168.44.27:/data

show master logs;

2 从服务器
yum install -y mariadb-server    #安装数据库
systemctl start mariadb.service    #启动服务
systemctl enable mariadb.service    #设置开启启动
mysql_secure_installation    #执行安全初始化脚本

#修改配置文件
vim /etc/my.cnf
server-id=2
read-only

systemctl restart mariadb.service

vim /data/all.sql
CHANGE MASTER TO
MASTER_HOST='192.168.44.17',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql.000001',
MASTER_LOG_POS=245;
mysql -uroot -pcentos < /data/all.sql

#启用同步线程
mysql> start slave;
show  slave status\G

主节点插入一条数据

在从节点查询数据是否同步

 

 

三、使用MHA实现Mysql高可用。

前提:已完成一主多从配置,配置方法参照第二题。
管理节点:192.168.44.7
被管理节点:一主二从
主:192.168.44.17
从:192.168.44.27、192.168.44.37

1、安装MHA包
在管理节点上安装两个包
mha4mysql-manager
mha4mysql-node
yum install -y mha*.rpm
在被管理节点安装
mha4mysql-node
yum install -y mha*.rpm

2、在管理节点建立配置文件
vim /etc/mastermha/app1.cnf
[server default]
user=mhauser    #在主从节点创建好账户
password=magedu
manager_workdir=/data/mastermha/app1/    #会自动生成,无需手工创建
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/    #会自动生成,无需手工创建
ssh_user=root    #需要配置基于KEY验证
repl_user=repluser
repl_password=magedu
ping_interval=1    #心跳间隔

[server1]
hostname=192.168.44.17
candidate_master=1
[server2]
hostname=192.168.44.27
candidate_master=1    #优先选择谁是新的主
[server3]
hostname=192.168.44.37

3、实现Master
vim /etc/my.cnf
[mysqld]
log-bin
server_id=1
skip_name_resolve=1    #禁止反向解析

systemctl restart mariadb.service

mysql>show master logs
mysql>grant replication slave on *.* to repluser@'192.168.44.%' identified by 'magedu';    #创建复制账号
mysql>grant all on *.* to mhauser@'192.168.44.%' identified by 'centos';    #创建mha管理账号

4、实现slave
vim /etc/my.cnf
[mysqld]
server_id=2 不同节点此值各不相同
log-bin
read_only
relay_log_purge=0    #不清除中继日志
skip_name_resolve=1    #禁止反向解析

systemctl restart mariadb.service

mysql>CHANGE MASTER TO MASTER_HOST='192.168.44.17',
MASTER_USER='repluser', MASTER_PASSWORD='centos',
MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245;
mysql>start slave;

5、在所有节点相互之间ssh key验证
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
ssh-copy-id 192.168.44.7
scp -r /root/.ssh 192.168.44.17:/root/
scp -r /root/.ssh 192.168.44.27:/root/
scp -r /root/.ssh 192.168.44.37:/root/

6、Mha验证和启动
masterha_check_ssh --conf=/etc/mastermha/app1.cnf    #ssh验证
masterha_check_repl --conf=/etc/mastermha/app1.cnf    #复制验证
masterha_manager --conf=/etc/mastermha/app1.cnf    #启动MHA
排错日志:/data/mastermha/app1/manager.log
注:一次性的,主宕机后,提升从节点为主然后该程序退出。

测试:主节点mysql服务异常

测试前状态:

主节点停止服务:

测试后状态(主节点切换至192.168.44.27):

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值