centos7数据库mysql+mariadb
1.MySQL库备份脚本(navicat for mysql是外部测试连接工具)
#!/bin/bash
# 要备份的数据库名,多个数据库用空格分开
databases=(guowang yaohan wycenter)
# 备份文件要保存的目录
basepath='/opt/guowang/mysql/'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
do
# 备份数据库生成SQL文件
/bin/nice -n 19 /usr/bin/mysqldump -u用户名 -p密码 --database $db > $basepath$db-$(date +%Y%m%d).sql
# 将生成的SQL文件压缩
/bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
# 删除7天之前的备份数据
find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
done
# 删除生成的SQL文件
rm -rf $basepath/*.sql
1.2navicat for mysql连接mysql报错:
1130 host ‘192.168.3.1’ is not allowed to connect to this mariadb server
解决:
mysql -u root -p
use mysql;
update user set host = '%' where user = 'guowang';
select host,user from user;
flush privileges;即可连接上了,大家可以试一试
2.MySQL库字符集的修改
2.1修改所有MySQL默认库的字符集
SHOW VARIABLES LIKE 'character';(存在latin1的字符集)
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
#guowang add(目前我增加的以下三行,有待测试效果)
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
systemctl restart mariadb(重启数据库之后,查看库字符集都是utf8)
2.2修改单个指定库的字符集
show databases;
use guowang;
alter database guowang character set utf8;
设置guowang数据库默认utf8
ALTER DATABASE `guowang` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置gw_name表默认utf8
ALTER TABLE `gw_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3.1MySQL 查看所有用户
select * from mysql.user;
3.2增加库
create database test;
3.3删除库
drop database test2;
3.4初始密码设置
mysqladmin -u root password
4.centos7中mysql的主从配置(并非双向同步)
10.10.84.91 mysql:guowang/123456
10.10.84.92 mysql:guowang/123456
yum install mariadb mariadb-server
systemctl start mariadb
执行mysql
报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
find / -name mysql.sock
解决1:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
解决2:mysql --socket=/var/lib/mysql/mysql.sock
主:
vi /etc/my.cnf
server-id=1
log-bin=mysql-bin
log-slave-updates=1
binlog-do-db=test1
binlog-do-db=test2
binlog-ignore-db=test3
binlog-ignore-db=test4
systemctl restart mariadb
mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'guowang1'@'10.10.84.92' IDENTIFIED BY '123456';
mysql> flush privileges;
mysql> show master status;
备:
vi /etc/my.cnf
server-id=2
log-bin=mysql-bin
log-slave-updates=1
replicate-do-db=test1
replicate-do-db=test2
replicate-ignore-db=test3
replicate-ignore-db=test4
systemctl restart mariadb
mysql
mysql> change master to master_host='10.10.84.91',master_user='guowang1',master_password='123456', master_log_file='mysql-bin.000008',master_log_pos=337;
mysql> start slave;
mysql> show slave status\G;
1.停掉slave服务
mysql> slave stop;
2.重置slave服务
mysql> reset stop;
Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令
5.mysql主从(主主|从从)双向同步
主:
server-id=1
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
auto_increment_offset = 1
auto_increment_increment = 2
mysql> GRANT REPLICATION SLAVE ON *.* TO 'wc123'@'10.10.84.92' IDENTIFIED BY '123';
mysql> flush privileges;
mysql> change master to master_host='10.10.84.92',master_user='wc456',master_password='456', master_log_file='mysql-bin.000008',master_log_pos=337;
mysql> start slave;
从:
server-id=2
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
auto_increment_offset = 2
auto_increment_increment = 2
mysql> GRANT REPLICATION SLAVE ON *.* TO 'wc456'@'10.10.84.91' IDENTIFIED BY '456';
mysql> flush privileges;
mysql> change master to master_host='10.10.84.91',master_user='wc123',master_password='123', master_log_file='mysql-bin.000007',master_log_pos=246;
mysql> start slave;
6.mysql实现读写分离(工具:mysql proxy)
http://www.cnblogs.com/DavidYan/articles/2531181.html
http://blog.csdn.net/cutesource/article/details/5710645
yum install mysql-proxy
rpm -qa|grep glib2
rpm -qa|grep lua
whereis mysql-proxy
mysql-proxy: /usr/bin/mysql-proxy /usr/lib64/mysql-proxy
vi /etc/mysql-proxy.cnf
[mysql-proxy]
admin-username = guowang
admin-password = 110
daemon = true
keepalive = true
proxy-backend-addresses = 10.10.10.91:3306
proxy-read-only-backend-addresses = 10.10.10.92:3306
proxy-lua-script = /usr/lib64/mysql-proxy/lua/rw-splitting.lua(没有就下载)
admin-lua-script = /usr/lib64/mysql-proxy/lua/admin.lua
log-file = /var/log/mysql-proxy.log
log-level = debug
主要参数注解:
proxy-backend-addresses mysql主库(写)地址
proxy-read-only-backend-addresses mysql从库(读)地址
proxy-lua-script 读写分离脚本
admin-lua-script admin脚本
admin-username 数据库用户名(主从上都需建立相同用户)
admin-password 数据库密码
daemon daemon进程运行
keepalive 保持连接(启动进程会有2个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)
启动脚本:
vi mysql-proxy.sh
#!/bin/bash
mode=$1
if [ -z "$mode" ] ; then
mode="start"
fi
case $mode in
start)
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/var/log/mysql-proxy.log &
;;
stop)
killall -9 mysql-proxy
;;
restart)
if $0 stop ; then
$0 start
else
echo "Restart failed!"
exit 1
fi
;;
esac
exit 0
7.mysql主从自动切换shell脚本
#!/bin/bash
cat << README
#################################################################################################
#操作步骤: #
#双机必须开启二进制日志,在mysql配置文件[mysqld]段加上log-bin=/var/lib/mysql/mysql-bin.log #
#两台server_id不能设置一样,默认情况下两台mysql的serverID都是1,需将其中一台修改为2即可! #
#在两台机器上均建立repl用户: #
grant replication slave on *.* to repl@'192.168.70.%' identified by '123456'; #
#在两台机器上建立访问用户: #
grant all on *.* to root@'192.168.70.%' identified by '123456' #
#################################################################################################
README
User=root
PW=123456
read -p "请输入slave IP:" Slave
Master=$(mysql -u${User} -h${Slave} -p${PW} -e "show slave status \G;"|awk '/Master_Host/{print $2}')
if [ -n "${Master}" ]
then
echo -e "Master现在的IP:${Master},Slave现在的IP:${Slave}"
M=$(mysql -u${User} -h${Master} -p${PW} -e "show master status;"|awk 'NR==2{print $2}')
S=$(mysql -u${User} -h${Slave} -p${PW} -e "show slave status \G;"|awk '/Read_Master_Log_Pos/{print $2}')
echo -e "master的pos节点是\033[1m\E[31;40m${M}\033[0m;slave的pos节点是\033[1m\E[31;40m${S}\033[0m"
else
echo "Slave IP输入错误,请重新输入"
exit 1
fi
if [ "${M}" -eq "${S}" ]
then
read -p "主从节点一致,输入Yes开始切换:" var
case "$var" in
[Yy]es)
mysql -u${User} -h${Slave} -p${PW} -e "slave stop;reset slave;change master to master_host='';"
Pos=$(mysql -u${User} -h${Slave} -p${PW} -e "show master status;"|awk 'NR==2{print $2}')
File=$(mysql -u${User} -h${Slave} -p${PW} -e "show master status;"|awk 'NR==2{print $1}')
mysql -u${User} -h${Master} -p${PW} -e "slave stop;
change master to master_user='repl',master_host='${Slave}',master_password='123456',master_log_file='${File}',master_log_pos=${Pos};
slave start;"
;;
*)
echo "输入错误......退出!"
;;
esac
echo "正在切换中,请等待3s......"
sleep 3
echo "切换成功.新的master是${Slave},slave是${Master}"
SlaveStatus=$(mysql -u${User} -h${Master} -p${PW} -e "show slave status \G;"|awk '/Running/{print $2}')
printf "新的主从状态: \n${SlaveStatus}\n"
else
echo "节点不一致,请同步节点再切换"
exit 1
fi
centos7数据库mysql+mariadb相关推荐
- 数据库MySQL/mariadb知识点——操作篇(2)库管理语句
创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name; 创建数据库 CHARACTER SET 'character set name' 设置字符集类型 COLL ...
- CentOS7部署(Mysql) MariaDB Galera Cluster 10.1记录
1.环境说明 vmwareworkstation 12 centos 7.2 64bit mini install mariadb 10.1 已关闭selinux firewalld 2.yum安装m ...
- 数据库MySQL/mariadb知识点——日志记录(2)二进制日志
二进制日志 记录已提交事务导致数据改变或潜在导致数据改变的SQL语句,通过"重放"日志文件中的事件来生成数据副本,不依赖存储引擎类型. 开启二进制日志,默认是关闭的,二进制日志和数 ...
- 数据库MySQL/mariadb知识点——触发器
触发器 触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增.删.改)的时候,系统会自动触发代码并执行. 触发器包含三个要素,分别为 事件类型:增删改,即insert.d ...
- 数据库MySQL/mariadb知识点——操作篇(4)数据操作语句
INSERT插入数据 单挑记录插入 INSERT INTO tb_name (col1,col2,...) VALUES (val1,val2,...); 示例: insert into tablen ...
- 数据库MySQL/mariadb知识点——索引
索引 索引是特殊数据结构:定义在查找时作为查找条件的字段,索引实现在存储引擎. 索引可以降低服务需要扫描的数据量,减少了IO次数 索引可以帮助服务器避免排序和使用临时表 索引可以帮助将随机I/O转 ...
- 数据库MySQL/mariadb知识点——函数
函数 函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可.此操作,实现了代码的复用.在 MySQL 中,函数有两种,分别为:系统函数和自定义函数. 1.系统 ...
- 数据库MySQL/mariadb知识点——数据类型
数据类型 所谓的列类型,其实就是指数据类型,即对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间. 在 SQL 中,将数据类型分成了三大类,分别为:数值型.字 ...
- centos7上mycat安装_centos7 Mycat/MySQL/MariaDB安装部署
使用yum安装MySQL详细步骤 安装mysql源 centos系统中不包含mysql的源,需要先安装mysql源 1.官网下载源.使用图形界面操作系统进入mysql官网,进入以下界面. 2.在Cen ...
最新文章
- SpringSecurity-短信验证码接口开发
- go 切片slice删除元素的方法
- 【转】走进windows编程的世界-----对话框、文本框、按钮
- easyui-tabs
- 最近一段时间经历的事情即做事方式的总结
- iis php 开启gzip_IIS6.0 开启Gzip方法及PHP Gzip函数分享
- POI:Excel表解析与导出通用工具类
- UBNT Bullet M2说明书
- 服务器延迟和时间偏移怎么设置,服务器时间经常不对如何处理
- N1烧USB供电跳线修复方法
- 计算机网络习题集与习题解析 pdf,计算机网络习题集与答案.pdf
- matlab流体力学分析,matlab流体力学
- Win10家庭版安装软件时提示“为了对电脑进行保护,已经阻止此应用”
- amp;#9733;色盲悖论正解!
- C# 查询科星继电器的输入端状态以及控制输出
- JavaScript中6种继承方式总结
- 600多万行的代码,苦撑12年的“乱项目”长这样
- NRF51822——LCD128X64驱动
- 洒扫庭除,恭候佳朋 ——知象光电欢迎广大来宾莅临TCT展会知象展位
- 【Linux】UTC时间、CST时间
热门文章
- 小目标检测的一些问题,思路和方案
- 人机智能既不是人类智能,也不是人工智能
- 人工智能军事对抗技术发展趋势
- 全球工业互联网十大最具成长性技术
- “万维网之父”发文阐述其下一个网络时代:将数据与应用分离,互联网去中心化正在路上...
- CNNIC报告:我国网民达7.72亿 人工智能取得重要进展
- 七大科技巨头统治世界?
- 程序员的生活就是这么朴实无华,且没钱
- 拼多多回应开除程序员:严重违反员工行为规范,因此解约!
- ​他被称为印度“ IT 大王”,富可敌国,却精打细算如守财奴