mysql操作命令

1.客户端登录
mysql -u root -p sercet -h 127.0.0.1 -P 3306
2.更改用户密码
set password=password("123456’’);
3.取消只读
show global variables like ‘%read_only%’;
set global read_only=off;
4.创建用户
#%指限制可用该用户登录的ip
create user ‘username’@’%’ IDENTIFIED BY ‘password’
5.创建数据库
create database dbname character set utf8 collate utf_general_ci;
6.赋予用户数据库操作权限
#all表示所有权限,也可以是select、delete、update、insert
#dbname.* 表示库下的所有表
grant all on dbname.* to username@’%’;
7.删除用户操作权限
revoke all on dbname.* from username@’%’;
8.刷新数据库权限
FLUSH PRIVILEGES;

9.导入数据

source /tmp/mysql.sql
mysql -uroot -psercet dbname < /tmp/mysql.sql

10.导出数据

1)导出整个库
mysqldump -uroot -psercet --single-transaction -R dbname > /tmp/mysql.sql
2)导出某个表
mysqldump -uroot -psercet --single-transaction dbname table > /tmp/mysql.sql
3)导出表中的某部分数据
mysqldump -uroot -psercet --single-transaction dbname table --where=“id=1 and name=’'xxx” > /tmp/mysql.sql
4)只导出表结构
mysqldump -uroot -psercet --single-transaction -d dbname table > /tmp/mysql.sql

11.不交互执行命令

#\G格式化结果
mysql -uroot -psercet -e “select * from table \G” dbname;

12.查询数据库中表的个数

select count(*) tables,table_schema from information_schema.tables where table_schema = ‘dbname’ group by table_schema;

13.mysql主从复制方式

1)主库
create user ‘rsyncdb’@’%’ identified by ‘sercet’;
grant replication slave on . to ‘rsyncdb’@’%’;
flush privileges;
2)备库
change master to
master_host=‘master_ip’,
master_port=3306,
master_user=‘rsyncdb’,
master_password=‘sercet’,
master_auto_position=1;
start slave;
3)查看slave状态
show slave status \G;
4)停止slave
stop slave;
5)清除slave信息
reset slave all;
6)主从复制错误解决方案
问题:先对备库数据操作,再次对主库进行操作导致主从复制异常
解决方案:修改主从复制模式,默认主从复制模式是strict(严格的),可进行修改为idempotent(幂等)来解决
操作步骤:stop slave;set global slave_exec_mode=“idempotent”;start slave;set global slave_exec_mode=“strict”;

14.查询数据库中表的数据大小

select table_name, CONCAT(round((table_size/1024/1024),2),‘MB’) from
(select table_name, data_length+index_length table_size
from information_schema.tables where information_schema.tables.table_schema=‘database_name’) t1
order by table_size desc limit 10;

15.查询表最后更新时间

SELECT
TABLE_NAME, UPDATE_TIME
FROM
information_schema.TABLES
WHERE
information_schema.TABLES.TABLE_SCHEMA = ‘DB_NAME’
AND
information_schema.TABLES.TABLE_NAME = ‘TABLE_NAME’;

16.获取sql执行时间

  set profiling=1;
  show profiles;

17.binlog日志

开启binlog日志(在[mysqld]下修改或添加如下配置):

server-id=1
log-bin=mysql-bin
binlog_format=MIXED

binlog日志模式

 Mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),
 基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)
 。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
 
1、STATEMENT模式(SBR)
每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行
的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave
中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)

2、ROW模式(RBR)
不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某
些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会
产生大量的日志,尤其是alter table的时候会让日志暴涨。

3、MIXED模式(MBR)
以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式
无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

查看默认的日志保存天数

show variables like '%expire_logs_days%';
set global expire_logs_days=off;
0-表示永不过期

设置为7天有效期(修改配置文件)

expire_logs_days=7

binlog日志导出

mysqlbinlog  --base64-output=decode-rows -v --start-date='2014-09-16 14:00:00' --stop-date='2014-09-16 14:20:00'  mysql-bin.000017 >log.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值