mysql日常运维
一、Linux内核和发行版本
uname -a
cat /etc/issue
二、glibc的版本
/lib/libc.so.6 ---没有man函数据的动态链接库
三、MySQL的版本
MySQL二进制分发版的文件名格式为:mysql-VERSION-OS.tar.gz
例如:Linux-Generic(glibc 2.5) (x86,64bit),Compressed TAR Archive(mysql-5.6.16-linux-glibc2.5-x86_64.tar.gz)
1、下载
http://dev.mysql.com/downloads/mysql/
2、查rpm包装在什么目录下
rpm -qpl MySQL-server-5.6.23-1.el6.i686.rpm |more
rpm -qpl MySQL-client-5.6.23-1.el6.x86_64.rpm |more
3、更改rpm安装路径
rpm --help
rpm --prefix --relocate
rpmbuild spec binary rpm
yum install
四、rpm安装
rpm -ivh xxx.rmp
rpm -pql xxx.rmp
MySQL 实例安装和启动
1. 安装
mysql_install_db --defaults-file=/root/data/mysql3306/my.cnf --basedir=/usr/ --datadir=/root/data/mysql3306/data
2. 启动
mysqld_safe --defaults-file=/root/data/mysql3306/my.cnf &
3. 登录
mysql -h127.0.0.1 -uroot -P3306 -p
五、安装演示:
1.关闭mysql
ps -ef |grep mysqld
kill 3397 3801
2.安装
cat init3306
sh init3306.sh
3.启动
cat start3306.sh
sh start3306.sh
注意:mysql_install_db(通过安装rpm包产生mysql_install_db),有如下命令查看:
rpm -pql MySQL-server-5.5.42-1.linux2.6.i386.rpm |grep install
which mysql_install_db
4.看日志
tail -100f /root/data/mysql3306/log/alert.log
发生数据字典不存在,就会自动创建。。。。
5.查看进程
ps -ef |grep mysqld
mysqld_safe是mysqld的父进程
6.登录
sh my3306.sh --mysql -h127.0.0.1 -uroot --P3306
六、脚本:
1.---安装mysql: init3306.sh
rm -rf /root/data/mysql3306/data/*
rm -rf /root/log/mysql3306/iblog/*
rm -rf /root/log/mysql3306/binlog/*
chmod -R 777 /root/data/mysql3306/data/
chmod -R 777 /root/log/mysql3306/iblog/
chmod -R 777 /root/log/mysql3306/binlog/
chmod 755 /root/data/mysql3306/my.cnf
mysql_install_db --defaults-file=/root/data/mysql3306/my.cnf --basedir=/usr/ --datadir=/root/data/mysql3306/data
chmod -R 777 /root/data/mysql/3306/data/
chmod -R 777 /root/log/mysql3306/iblog/
chmod -R 777 /root/log/mysql3306/binlog/
2.--启动mysql: start336.sh
mysqld_safe --defaults-file=/root/data/mysql3306/my.cnf &
3.--登录mysql: my3306.sh
mysql -h127.0.0.1 -uroot -P3306 -p
------研究下
cd /root/data/mysql3306/data/mysql
cd /root/data/mysql3306/data/performance_schema --性能相关的
cd /root/data/mysql3306/data/test ---测试库
cd /root/log/mysql3306/iblog/ ---innodb自己的数据和日志
------了解my.cnf(多实例用端口来取分)
vi /root/data/mysql3306/my.cnf
[client]
port=3306
socket=/root/data/mysql3306/run/mysql.sock
[mysql]
port=3306
promprt=\\u@\\d \\r:\\m:\\s>
[mysqld]
default-storage-engine=INNODB
character-set-server=iatin1
explicit_defaults_for_timestamp=true
#dir
innodb_log_group_home_dir=/root/log/mysql3306/iblog
innodb_data_home_dir=/root/log/mysql3306/iblog
basedir=/usr
datadir=/root/data/mysql3306/data
tmpdir=/root/data/mysql3306/tmp
slave_load_tmpdir=/root/data/mysql3306/tmp
log-error=/root/data/mysql3306/log/alert.log
slow_query_log_file=/root/data/mysql3306/log/slow.log
relay_log_info_file=/root/log/mysql3306/binlog/relay-log.info
master-info-file=/root/log/mysql3306/binlog/master.info
socket=/root/data/mysql3306/run/mysql.sock
log-bin=/root/log/mysql3306/binlog/binlog
relay-log=/root/log/mysql3306/binlog/relaylog
innodb_force_recovery=0
七、操作mysql
1、登录mysql:
本地: mysql -u$usrename -p$password
远程: mysql -u$username -p$passwrod -h$ip
多实例:mysql -u$username -p$passwrod -P$port
2、用户操用
(1)创建用户
方法一:
insert into mysql.user(user,host,password) values('mytest','localhost',password('1234'));
flush privilege;
方法二:create user mystest@'%' identified by '1234';
(2)用户授权
单纯的授权
grant all privileges on *.* to mytest@localhost;
grant insert,update,delete,select on *.* to mytest@localhost;
授权并创建用户
grant all privileges on *.* to mytest@localhost identified by '1234';--创建用户并刷缓存,
(等同于:insert into mysql.user ,flush privilege)
grant all privileges on *.* to mytest@localhost; --对象权限
grant super on *.* to mytest@'%'; --系统权限 (supert相当于oracle中的dba权限)
3、实操
show databases; --查看所有的数据库
use mysql; --切到mysql数据库
use tables; --在mysql库的tables
select user,host,password from mysql.user; ----查mysql的所有用户,这个是由mysql_install_db创建的
grant all privilege on *.* to test_1@'%'; --all代表(select update,delete,alter admin,super_acl),第一个*用户,第二个*对象,%所有的主机
mysql -h127.0.0.1 -utest_1 ----用grant创建的用户登录mysql
select user(); ---当前是什么用户
create database jianfeng; ---创建数据库(mysql中的数据库类似于oracle中的schema
create table user(id int) engine=innodb ---创建表;
grant select on jianfeng.user to test_1@'%'; ---jianfeng.user表的查询授权给test_1用户
insert into mysql.user(user,host,password) values('test_2','%',password('1234')); --用这种方法创建test_2用户,有个问题权限没有
flush privileges; ---把mysql.user表的用户权限重新刷到内存中
show master status\G;
change master to xxx;
show processlist; ---查看当前用户的连接,线程形式(类似oracle中的v$session)
4、drop table处理
rename table test_1 to test;(可以快速切回来rename table test to test_1;)
备份mysqldump:mysqldump -h127.0.0.1 -uroot mydb gyj_t1 >/tmp/gyj_t1.sql
drop table test;
5、自增主键(最好是自己定义主键,系统默认的是全局的增量)
create table test (id int primary key auto_increment,name varchar(100)) engine=innodb;
show create table test\G;
create index test_name_idx on test(name);
show create table test\G;
insert into test(name) values('test');
commit;
select * from test;
6、alter table处理 --会动原来的数据,需要拷贝数据
alter table test add coll int;
7、执行计划
select * from test where id=1\G;
explain select * from test where id=1;
create index test_id_coll_idx on test(id,coll);
explain select * from test where id=1;
create index test_col_name on test(coll,name);
explain select * from test where coll>10 and name='xx';
show create table test\G;
alter table test drop index test_name_idx;
explain select * from test where coll>10 and name>'xx';
8、数据导出
(1)用dump导出数据
mysqldump -h127.0.0.1 -uroot mydb gyj_t1 >/tmp/xx.sql
drop table test;
source /tmp/xx.sql --导入数据
(2)用select导出数据
select * from test into outfile '/tmp/yy.sql';
9、数据迁移
(1)停机方式
mysqldump/loadata
(2)不停机方式
物理上:搭备库(可以级联5.5-->5.6,向下兼容的)
把主库read only,备库就能把主库转过来的binlog消化完,再把备库切为主
show variables like '%read%';
set global read_only=on;
insert into test(name) values('xx'); --插不进的,不能用root用户
(3)不同平台小表:oracle--->mysql
脚本:synfull.pl
(4)不同平台的一个大表迁多:增量迁移
a.把数据的全量迁过去
b.把迁的过程中产生的日志传过去
c.apply增量
d.锁表切切换
(5)增量
a.Oracle:物化视图
b.MySQL:trigger
create trigger tri_test
before insert,delete,update
insert test_log value(type,id);
end;
/
insert into test values(1,'xxx');
test_log value('insert','1');
lock table test;
应用切换
10、binlog
reset master; --会把当前的binlog清掉
show binlog events;
create table x1(id int);
show binlog events;
insert into x1 values(1);
commit;
show binlog events;
类似于: mysqlbinlog -vvv binlog.00001 > /tmp/binlog.log
vi /tmp/binlog.log
WAL: write ahead log,日志优先写
11、归档
flush logs;
show master status;
write ahead log. recover backup, duriably. undo acid mvcc
12、参数和统计信息
show variables; ----参数
show variables like '%bin%';
show status; ----统计信息
show global status like'%insert%';
insert into test(name) values('xxxxx');
show variables like '%default%';
set global default_storage_engine=myisam; ---不影响当前会话的操作,影响新建立的连接
set session default_storage_engine=myisam; ---影响当前会话的操作
---连接池
max_connect
min_connect
max_idle
time_out
disconnect --释放
mysql日常运维的更多相关文章
- MySQL 日常运维业务账号权限的控制
在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写 ...
- mysql日常运维与参数调优
日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事 ...
- MySQL日常运维操作---持续更新
1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...
- Docker Swarm 日常运维命令笔记
之前介绍了Docker管理工具-Swarm部署记录,这里简单总结下Docker Swarm的日常维护命令,以作为平时运维笔记. Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以 ...
- 有赞MySQL自动化运维之路—ZanDB
有赞MySQL自动化运维之路—ZanDB 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管理等任务都对DBA产生了更高的要求,单纯的凭借记忆力去管理那几十 ...
- hadoop日常运维与升级总结
日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...
- zookeeper 用法和日常运维
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- hadoop记录-hadoop集群日常运维命令
hadoop集群日常运维命令 #1.namenode hadoop namenode -format #格式化,慎用 su hdfs hadoop-daemon.sh start namenode h ...
- 部署MySQL自动化运维工具inception+archer
***************************************************************************部署MySQL自动化运维工具inception+a ...
随机推荐
- P4113 [HEOI2012]采花 (莫队TLE)
思路 update 11.2 树状数组AC 本题莫队过不去,会TLE ----------------------- 但也是个不错的莫队练手题 ------------------------ 毕竟C ...
- shell:遍历目录和子目录的所有文件及匹配文件内容到日志
过滤文件内网 #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] ...
- vuejs全局api概念
什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造 ...
- 处理div 在IE6 IE7 IE8 不居中的问题
具体处理方式如下:1 .html 顶部加入:DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- makefile 中的符号替换($@、$^、$<、$?)
Makefile $@, $^, $< $@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件$? 表示比目标还要新的依赖文件列表 如一个目录下有如下文件: $ ls ...
- UVa 1605 联合国大楼
https://vjudge.net/problem/UVA-1605 题意:有n个国家,要求设计一栋楼并为这n个国家划分房间,要求国家的房间必须连通,且每两个国家之间必须有一间房间是相邻的. 思路: ...
- EsayUI + MVC + ADO.NET(仓储基类)
该篇主要讲解工作单元的运用 和DbHlper抽象封装 工作单元仓储基类:BaseRepository (DbHlper抽象封装) 仓储接口(CRUD):IRepository (CRUD接口) ...
- C# 二进制图片串互转
C# byte数组与Image的相互转换 功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对 ...
- kali 下程序卸载方法
ali中主要为2种卸载方法:1.apt2.dpkg 使用apt的方式有:apt-get remove [package]apt-get remove --purge # ------(package ...
- Lua和C++交互 学习记录之一:C++嵌入脚本
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...