- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MySQL的一些功能实用的Linux shell脚本分享由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Memcached启动脚本 。
1
|
# vim /etc/init.d/memcached
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/bin/bash
#=======================================================================================
# chkconfig: - 80 12
# description: Distributed memory caching daemon
# processname: memcached
#=======================================================================================
IPADDR=`
/sbin/ifconfig
eth1 |
awk
-F
':'
'/inet addr/{print $2}'
|
sed
's/[a-zA-Z ]//g'
`
PORT=
"11211"
USER=
"root"
SIZE=
"2048"
CONNNUM=
"51200"
PIDFILE=
"/var/run/memcached.pid"
BINFILE=
"/usr/local/memcached/bin/memcached"
LOCKFILE=
"/var/lock/subsys/memcached"
RETVAL=0
start() {
echo
-n $
"Starting memcached......"
$BINFILE -d -l $IPADDR -p $PORT -u $USER -m $SIZE -c $CONNNUM -P $PIDFILE
RETVAL=$?
echo
[ $RETVAL -
eq
0 ] &&
touch
$LOCKFILE
return
$RETVAL
}
stop() {
echo
-n $
"Shutting down memcached......"
/sbin/killproc
$BINFILE
RETVAL=$?
echo
[ $RETVAL -
eq
0 ] &&
rm
-f $LOCKFILE
return
$RETVAL
}
restart() {
stop
sleep
1
start
}
reload() {
echo
-n $
"Reloading memcached......"
/sbin/killproc
$BINFILE -HUP
RETVAL=$?
echo
return
$RETVAL
}
case
"$1"
in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e $LOCKFILE ] && restart
RETVAL=$?
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo
"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
|
。
1
2
3
4
5
|
exit
$RETVAL
# chmod +x /etc/init.d/memcached
# chkconfig --add memcached
# chkconfig --level 235 memcached on
# service memcached start
|
binlog 自动清理脚本 。
1
|
# vim /data/scripts/delete_mysql_binlog.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#!/bin/bash
#=======================================================================================
# 用于删除 MySQL Master 端已经同步完的 binlog【需在 Master 端运行】,以减少磁盘空间
# 每天凌晨 5:30 分运行一次
#
# 注:需在 Slave 端添加允许 Master 端访问的帐号【帐号:check_binlog,密码:binlog_2356】
# 运行于 MySQL Master 端【目前只用于一主一从的同步模式,对于多从的情况暂时未考虑】
#=======================================================================================
PATH=
/sbin
:
/bin
:
/usr/sbin
:
/usr/bin
:
/usr/local/sbin
:
/usr/local/bin
## Slave端连接信息
SLAVE_ADDR=
"XXX.XXX.XXX.XXX"
SLAVE_USER=
"check_binlog"
SLAVE_PWD=
"binlog_2356"
LOGFILE=
"/data/logs/db_sync_info.log"
PINGFILE=
"/tmp/mysqlping.log"
## MySQL状态信息查看命令
SQLCMD=
"show slave status"
#=======================================================================================
## 检查MySQL是否已经运行
if
[[ `
ps
aux |
grep
mysql[d] |
wc
-l` -
eq
0 ]];
then
echo
The MySQL is not running at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 测试Slave端的连通性
nohup
mysqladmin -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD}
ping
> ${PINGFILE}
retval=`
grep
"^error"
${PINGFILE}`
rm
-f ${PINGFILE}
if
[[
"${retval}X"
!=
"X"
]];
then
echo
The MySQL Slave can not be connected at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 检查是否合法的Slave
MASTER_ADDR=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"${SQLCMD}\G;"
|
awk
'$1=="Master_Host:" {print $2}'
`
LOCAL_ADDR=`
/sbin/ifconfig
eth1 |
awk
-F
':'
'/inet addr/{print $2}'
|
sed
's/[a-zA-Z ]//g'
`
if
[[
"${MASTER_ADDR}"
!=
"${LOCAL_ADDR}"
]];
then
echo
The MySQL Slave is not lawful at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 获得Slave端信息,以此来确定是否处于正常同步的情况
IO_STATUS=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"${SQLCMD}\G;"
|
awk
'$1=="Slave_IO_Running:" {print $2}'
`
SQL_STATUS=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"${SQLCMD}\G;"
|
awk
'$1=="Slave_SQL_Running:" {print $2}'
`
if
[[
"${IO_STATUS}"
!=
"Yes"
||
"${SQL_STATUS}"
!=
"Yes"
]];
then
echo
The MySQL Replication is not synchronous at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 再做一次判断,以保证数据同步绝对正常【创建测试数据】
mysql -uroot -e
"create database if not exists mytestdb;"
sleep
3
retval=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"show databases;"
|
grep
mytestdb`
mysql -uroot -e
"drop database if exists mytestdb;"
if
[[
"${retval}X"
=
"X"
]];
then
echo
The MySQL Replication is not synchronous at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 在已经同步的情况,还需要判断当前同步的binlog,以此来确定哪些已经是过期的binlog
SLAVE_BINLOG1=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"${SQLCMD}\G;"
|
awk
'$1=="Master_Log_File:" {print $2}'
`
SLAVE_BINLOG2=`mysql -h${SLAVE_ADDR} -u${SLAVE_USER} -p${SLAVE_PWD} -e
"${SQLCMD}\G;"
|
awk
'$1=="Relay_Master_Log_File:" {print $2}'
`
## 获得Master端,当前的binlog文件以及binlog路径
MASTER_BINLOG=`mysql -uroot -e
"show master status;"
|
grep
-
v
'^+'
|
tail
-1 |
awk
'{print $1}'
`
## 主从端已经同步到相同的binlog
if
[[
"${SLAVE_BINLOG1}"
=
"${SLAVE_BINLOG2}"
&&
"${SLAVE_BINLOG1}"
=
"${MASTER_BINLOG}"
]];
then
CURR_BINLOG=
"${MASTER_BINLOG}"
## 主从端已经同步,但从端的binlog还没有追赶到主端最新的binlog
elif
[[
"${SLAVE_BINLOG1}"
=
"${SLAVE_BINLOG2}"
&&
"${SLAVE_BINLOG1}"
!=
"${MASTER_BINLOG}"
]];
then
CURR_BINLOG=
"${SLAVE_BINLOG1}"
## 主从端已经同步,主从端的binlog一致,但relaylog还不一致
elif
[[
"${SLAVE_BINLOG1}"
!=
"${SLAVE_BINLOG2}"
&&
"${SLAVE_BINLOG1}"
=
"${MASTER_BINLOG}"
]];
then
CURR_BINLOG=
"${SLAVE_BINLOG2}"
else
echo
Has noknown error at:`
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
mysql -uroot -e
"purge binary logs to '${CURR_BINLOG}';"
if
[[ $? -
eq
0 ]];
then
echo
Clear MySQL binlog is ok at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
fi
|
1
2
|
# crontab -e
30 05 * * *
/data/scripts/delete_mysql_binlog
.sh >
/dev/null
2>&1
|
修复MySQL主从同步 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#!/bin/sh
PATH=
/sbin
:
/bin
:
/usr/sbin
:
/usr/bin
:
/usr/local/sbin
:
/usr/local/bin
LOGFILE=
/data/repair_mysql_sync_
`
date
+%F`.log
SQLCMD1=
"show slave status"
## 查看MySQL是否已启动
if
[[ `
ps
aux |
grep
mysqld |
grep
-
v
grep
`
"X"
=
"X"
]];
then
echo
The MySQL is not running at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 获得MySQL从端Relay binlog的路径
retval=`
grep
"^relay-log"
/etc/my
.cnf |
grep
-
v
relay-log- |
grep
'/'
`
if
[[
"${retval}"
=
"X"
]];
then
RELAY_BINLOG_PATH=`
ps
aux |
grep
-w mysqld |
grep
-
v
grep
|
awk
'{print $13}'
|
awk
-F
'='
'{print $2}'
`
else
RELAY_BINLOG_PATH=`
dirname
$(
echo
${retval} |
awk
-F
'='
'{print $2}'
)`
fi
## 查找master.info文件,用于定位Binlog信息
MASTER_FILE=`
ps
aux |
grep
-w mysqld |
grep
-
v
grep
|
awk
'{print $13}'
|
awk
-F
'='
'{print $2}'
`
/master
.info
if
[[ ! -e ${MASTER_FILE} ]];
then
echo
This Server is not MySQL Slave at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
1
fi
## 获得当前的同步状态
IO_STATUS=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Slave_IO_Running:" {print $2}'
`
SQL_STATUS=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Slave_SQL_Running:" {print $2}'
`
if
[[
"${IO_STATUS}"
=
"Yes"
&&
"${SQL_STATUS}"
=
"Yes"
]];
then
echo
Now, The MySQL Replication is synchronous at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
exit
0
fi
## 从master.info文件中,获得MySQL主端的同步信息
REPLI_INFO=`
sed
'/^$/d'
${MASTER_FILE} |
tail
+2 |
head
-5`
REPLI_BINLOG_FILE=`
echo
${REPLI_INFO} |
awk
'{print $1}'
`
REPLI_IPADDR=`
echo
${REPLI_INFO} |
awk
'{print $3}'
`
REPLI_USER=`
echo
${REPLI_INFO} |
awk
'{print $4}'
`
REPLI_PWD=`
echo
${REPLI_INFO} |
awk
'{print $5}'
`
## 删除无用的Relay binlog
rm
-rf ${RELAY_BINLOG_PATH}/*-relay-bin.*
## 直接从0位置开始同步
SQLCMD2=
"change master to master_host='${REPLI_IPADDR}', master_user='${REPLI_USER}', master_password='${REPLI_PWD}',"
SQLCMD2=
"${SQLCMD2} master_log_file='${REPLI_BINLOG_FILE}', master_log_pos=0"
mysql -uroot -e
"stop slave;"
mysql -uroot -e
"${SQLCMD2};"
mysql -uroot -e
"start slave;"
## 如果同步的过程中,出现重复记录导致同步失败,就跳过
while
true
do
sleep
2
IO_STATUS=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Slave_IO_Running:" {print $2}'
`
SQL_STATUS=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Slave_SQL_Running:" {print $2}'
`
BEHIND_STATUS=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Seconds_Behind_Master:" {print $2}'
`
SLAVE_BINLOG1=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Master_Log_File:" {print $2}'
`
SLAVE_BINLOG2=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
'$1=="Relay_Master_Log_File:" {print $2}'
`
## 出现错误,就将错误信息记录到日志文件,并跳过错误继续同步
if
[[
"${IO_STATUS}"
!=
"Yes"
||
"${SQL_STATUS}"
!=
"Yes"
]];
then
ERRORINFO=`mysql -uroot -e
"${SQLCMD1}\G;"
|
awk
-F
': '
'$1=="Last_Error" {print $2}'
`
echo
"The MySQL synchronous error information: ${ERRORINFO}"
>> ${LOGFILE}
mysql -uroot -e
"stop slave;"
mysql -uroot -e
"set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;"
mysql -uroot -e
"start slave;"
## 已完成同步,就正常退出
elif
[[
"${IO_STATUS}"
=
"Yes"
&&
"${SQL_STATUS}"
=
"Yes"
&&
"${SLAVE_BINLOG1}"
=
"${SLAVE_BINLOG2}"
&& ${BEHIND_STATUS} -
eq
0 ]];
then
echo
The MySQL synchronous is ok at: `
date
+%F
" "
%H-%M-%S` >> ${LOGFILE}
break
fi
done
|
。
最后此篇关于MySQL的一些功能实用的Linux shell脚本分享的文章就讲到这里了,如果你想了解更多关于MySQL的一些功能实用的Linux shell脚本分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
直接上代码,可以写在公共文件common和继承的基础类中,方便调用 ?
1、php服务端环境搭建 1.php 服务端环境 安装套件 xampp(apach+mysql+php解释器) f:\mydoc文件(重要)\dl_学习\download重要资源\apache
如下所示: Eclipse快捷键 Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
第一步:conn.PHP文件,用于连接数据库并定义接口格式,代码如下: php" id="highlighter_808731">
本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。 1、如果在Linux下使用GCC编译器执行下列程序,输出结果是什么?
安装完最新的Boost库 官方说明中有一句话: Finally, $ ./b2 install will leave Boost binaries in the lib/ subdirecto
为了梳理前面学习的《spring整合mybatis(maven+mysql)一》与《spring整合mybatis(maven+mysql)二》中的内容,准备做一个完整的示例完成一个简单的图书管理功
网站内容质量仅仅是页面综合得分里面的一项.不管算法如何改变调整,搜索引擎都不会丢弃网站页面的综合得分。 一般情况下我们把页面的综合得分为8个点: 1、标题的设置 (标题的设置要有独特性)
最近事情很忙,一个新项目赶着出来,但是很多功能都要重新做,一直在编写代码、debug。今天因为一个新程序要使用fragment来做,虽然以前也使用过fragment,不过没有仔细研究,今天顺道写篇文
Android资源命名规范 最近几个月,大量涉及android资源的相关工作。对于复杂的应用而言,资源命名的规范很有必要。除了开发人员之外,UI设计人员(或者切图相关人员)也需要对资源使用的位置非常
以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。 两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。
如下所示: ? 1
如果想在自定义的View上面显示Button 等View组件需要完成如下任务 1.在自定义View的类中覆盖父类的构造(注意是2个参数的) 复制代码 代码如下: publ
实现功能:实现表格tr拖动,并保存因为拖动改变的等级. jsp代码 ?
代码:测试类 java" id="highlighter_819000"> ?
红黑树是一种二叉平衡查找树,每个结点上有一个存储位来表示结点的颜色,可以是red或black。 红黑树具有以下性质: (1) 每个结点是红色或是黑色 (2) 根结点是黑色的 (3) 如果一个
废话不多说,直接上代码 ? 1
码代码时,有时候需要根据比较大小分别赋值: ? 1
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理github托管项目代码 1、下载安装Git 1、下载
直接上代码: 复制代码 代码如下: //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABC
我是一名优秀的程序员,十分优秀!