可以查看由mysql自己解释的命令_Mysql使用总结

1.Sql

1.1.1 插入insert的使用

1.insert ignore into

1.insert ignore into

当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:

INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')

2.on duplicate key update

当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但错误不会被忽略掉。例如,为了实现name重复的数据插入不报错,可使用一下语句:

INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id

3.insert …select…where not exist

根据select的条件判断是否插入,可以不光通过primary和unique来判断,也可通过其它条件。例如:

INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

4.replace into

如果存在primary or unique相同的记录,则先删除掉。再插入新记录。

REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books

1.1.2 grant使用

grant select on testdb.* to teamuser@10.161.204.81 identified by '123456!';

赋予用户teamuser从服务器10.161.204.81上查询数据库testdb所有表的权限;注意赋予内网时,登录也得用内网ip,mysql -h10.161.204.81 -uteamuser -p'123456!'

所有权限用all,即用all代替select

导出数据:

mysql -uroot -p'123456!' testdb -e "select id,name from testarticle where id=\"123456\"" > /home/app/a.txt

导出insert语句

mysqldump -uroot -p'123456!' testdb categorys --default-character-set=utf8 > /home/b.txt

二.数据库维护

2.1故障处理

2.1.1主从不同步的处理-1062

1)查看slave状态:show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.100.22.15

Master_User: repl_user

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000362

Read_Master_Log_Pos: 175989792

Relay_Log_File: relay-bin.000540

Relay_Log_Pos: 258368116

Relay_Master_Log_File: mysql-bin.000361

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1062

Last_Error: Error 'Duplicate entry '1342170' for key 'PRIMARY'' on query. Default database: 'usercenter'. Query: 'insert into test_charge ……

Skip_Counter: 0

Exec_Master_Log_Pos: 673522500

Relay_Log_Space: 836682055

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 1062

Last_SQL_Error: Error 'Duplicate entry '1342170' for key 'PRIMARY'' on query. Default database: 'usercenter'. Query: 'insert into test_charge ……

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

分析:

0818b9ca8b590ca3270a3433284dd417.png

正常情况Seconds_Behind_Master应该为0

解决方法:

A)这种适用于该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况,具体命令:

slave stop;

set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

slave start;

B)由此表可知MySQL Server System Variables, slave_skip_errors 是无法被动态改变的.

要改变 slave_skip_errors 的方法就只有在 MySQL 启动时加:

--slave_skip_errors=all

或者于 /etc/my.cnf 加入:

slave-skip-errors=all # 于 [mysqld] 下面加入此行

再 restart mysql 即可

确认是否忽略所有错误

mysql> show variables like "%slave%";

slave_skip_errors => ALL # 看到 ALL 就代表会忽略掉所有错误讯息

忽略某个错误编号

若只要排除 Duplicate entry (Last_Errno: 1062), 可以单独指定 Error No, 多个写法如下:

--slave-skip-errors=1062,1053

--slave-skip-errors=all

于 my.cnf 设定忽略

vim /etc/my.cnf

slave-skip-errors=1062 # 于 [mysqld] 下面加入此行

2)扩展:

0818b9ca8b590ca3270a3433284dd417.png

2.1.2主从不同步的处理,errcode:1236

1)查看slave状态:show slave status\G;

Last_IO_Errno:1236Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'

解决方法:

A)进入mysql server,即mysql -uusername -ppassword

在mysql命令行中运行如下:

set global max_allowed_packet = 2*1024*1024*10

退出mysql命令行,然后重新登录。

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

B)可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

max_allowed_packet = 20M

如果找不到my.cnf可以通过

mysql --help | grep my.cnf

去寻找my.cnf文件。

有了配置文件,在配置文件中的[mysqld]下边加些常用的配置参数。重启mysql服务器后,该参数即可生效。

2.2 主从设置

2.1.2 从指定位置同步

1)有的时候主从同步有问题了以后,需要从log位置的下一个位置进行同步,相当于跳过那个错误,这时候也可以使用CHANGE MASTER命令来处理,只要找到对应的LOG位置就可以,比如:

slave stop;

CHANGE MASTER TO

MASTER_HOST='10.1.1.75',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;

slave start;

2.3 备份

2.3.1 逻辑备份

1)备份:

mysqldump -hdb.test.com -uusername -ppassword testdb table1 table2 table3 | gzip > /home/mysql_bak/bakup-`date +%Y-%m-%d`.sql.gz

2)恢复:

gunzip < /home/mysql_bak/bakup-2015-03-14.sql.gz | mysql -uusername -ppassword testdb

2.4 启动和停止服务器

2.4.1 启动mysql

1)配置my.cnf文件,然后启动:

./bin/mysqld_safe --user=mysql &

2.4.2 停止mysql

$mysql_dir/bin/mysqladmin -uuser -ppassword shutdown

或./bin/mysqladmin  -S /tmp/mysql.sock -uroot -pq1234 shut

2.5优化处理

2.6 常用命令使用

2.6.1 常用命令

1.show processlist;解释:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。

2.telnet 123.124.92.80 3306 查看是否有权限

3.查看创建表语句:

showcreate table tablename;

例如:

要查看jos_modules表结构的命令:

show create table jos_modules;

4.查看一个表的索引:show index from tblname;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值