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 ...
随机推荐
- hdu 2222 Keywords Search - Aho-Corasick自动机
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Python3基础 逻辑运算 and or not 示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- ubuntu16.04下无线网卡无法正常连网
背景:无线网卡初次连接可以正常上网,但是用了一会儿就会出现无法上网的情况 版本: Ubuntu 16.04 一.分析: 1.使用ifconfig命令发现不会显示无线网卡,说明无线网卡被关闭,笔者输出的 ...
- PHP开发者的路书
初学者 作为初学者,通常情况下,我们都会买一本PHP教材,或者在网上看免费教程,这当然是学习的好途径.因为,这些书籍和网上的免费教程,基本上都是由浅入深的渐进式教学方式,基础知识居多,高级知识占少量的 ...
- Mysql相关问题收集
1.查询每个班级的前三名 DROP TABLE IF EXISTS `sc`; CREATE TABLE `sc` ( `id` ) NOT NULL AUTO_INCREMENT, `name` v ...
- linq——group by
多列排序&&聚合函数 var result = from i in (from uh in db.UserHistories ...
- 自整理的jquery.Validate验证表达式
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母 /^[0-9a-zA-Z]*$/g jQuery.validator.addMethod("letters ...
- c++ 在指定长度的数组或者容器中,统计元素出现的次数(count)
#include <iostream> // cout #include <algorithm> // count #include <vector> // vec ...
- html 绘制矩形轨迹,选中区域
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 微信小程序 - 简述
1.小程序理解 基于微信的 免安装 MVVM 应用 编码使用 ES 6 一个页面基本组成:wxml wxss js ( html.css.js ) 2. 常见用法 ( 基本就是跟着例子走.. ) 设置 ...