如何在mysql查询进程中完整的查询语句的方法

在主机运行过程中,因为代码设计原因,会造成一些sql语句卡死现象
正常,我们都是在mysql中输入show processlist;来查询
但是这个语句显示的info列,没有把query的sql语句信息完整列出,
对于我们想了解具体,造成麻烦。

全部列出,大家可以试试!

mysql主从同步配置全过程

mysql服务器的主从配置,确实是一件很简单的事情

一准备工作
1、mysql配置文件my.cnf的位置
   查找命令: find / -name my.cnf

2、如何启动、停止mysql,找好启动文件
   /etc/init.d/mysql restart
   /etc/init.d/mysql start
   /etc/init.d/mysql stop
二配置步骤
假设有两台机器,已经安装好了mysql(尽量同版本,且两台机器同一网络,可以ping通)
主机A: 192.168.1.100
从机B: 192.168.1.101

可以有多台从机

1、先登录主机 A
mysql>GRANT REPLICATION SLAVE ON *.* TO  ‘backup’@’192.168.1.101’ IDENTIFIED BY  ‘123456’;
赋予从机权限,有多台丛机,就执行多次
这个也可以用主机A的phpMyAdmin 新建一个针对192.168.1.101可访问的拥有权限的用户
2、 打开主机A的my.cnf,输入
server-id= 1    #主机标示,整数
log_bin= /var/log/mysql/mysql-bin.log   #确保此文件可写
read-only=0  #主机,读写都可以
binlog-do-db=test   #需要备份数据,多个写多行
binlog-do-db=testsync   #需要备份数据,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行

3、打开从机B的my.cnf,输入
server-id= 2
log_bin= /var/log/mysql/mysql-bin.log
master-host=192.168.1.100
master-user=backup
master-pass=123456
master-port=3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
4、对/var/log/mysql/ 是否有mysql目录,如没有新建 mkdir mysql,然后设置可写权限  chmod 777 /var/log/mysql/
5、同步数据库
有多种方法,我说简单的一种,先mysqldump导出主机A的数据test为 test.sql
然后在,从机B上建立数据库test,mysql导入 test.sql到test库中

6、先重启主机A的mysql,/etc/init.d/mysql restart,再重启从机B的mysql,/etc/init.d/mysql restart。
7、验证
在主机A中,mysql>show master status\G;
在从机B中,mysql>show slave status\G;
能看到大致这些内容
File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
可以在主机A中,做一些INSERT, UPDATE, DELETE 操作,看看主机B中,是否已经被修改

三、其它辅助命令
1、为了保护数据在从A导到B的后,数据不发生变动,最好导之前进行锁表操作,导到B主机同步前进行解锁操作
锁表:mysql > FLUSH TABLES WITH READ LOCK;
  注意 为了保证FLUSH TABLES语句让读锁定保持有效。(如果退出客户程序,锁被释放)。建立新的SSH连接,然后对主服务器上的数据进行快照。
解锁:mysql > UNLOCK TABLES;
2、从服务器执行同步
 mysql>start slave;
 mysql>load data from master;
3、验证配置
登录从服务器输入如下命令:
mysql> show slave status\G;
会得到类似下面的列表:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
都为yes,则配置正确.
4、附
一些错误信息的处理,主从服务器上的命令,及状态信息。
在从服务器上使用show slave status\G
Slave_IO_Running,为No,
则说明IO_THREAD没有启动,请执行start slave io_thread
Slave_SQL_Running为No
则复制出错,查看Last_error字段排除错误后执行start slave sql_thread
查看Slave_IO_State字段空 //复制没有启动
Connecting to master//没有连接上master
Waiting for master to send event//已经连上
主服务器上的相关命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to ‘log_name’
purge logs before ‘date’
reset master(老版本flush master)

从服务器上的相关命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此线程把master段的日志写到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息
PURGE MASTER [before ‘date’] 删除master端已同步过的日志
几个跟热备有关的mysql命令:(需要在mysql命令行界面或query )

    * stop slave    #停止同步
    * start slave    #开始同步,从日志终止的位置开始更新。
    * SET SQL_LOG_BIN=0|1 #主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误
    * SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。
    * RESET MASTER #主机端运行,清除所有的日志,这条命令就是原来的FLUSH MASTER
    * RESET SLAVE   #从机运行,清除日志同步位置标志,并重新生成master.info
      虽然重新生成了master.info,但是并不起用,最好,将从机的mysql进程重启一下,
    * LOAD TABLE tblname FROM MASTER #从机运行,从主机端重读指定的表的数据,每次只能读取一个,受timeout时间限制,需要调整timeout时间。执行这个命令

需要同步账号有 reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值
    * LOAD DATA FROM MASTER #从机执行,从主机端重新读入所有的数据。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表

比较大,要增加net_read_timeout 和 net_write_timeout的值
    * CHANGE MASTER TO master_def_list #在线改变一些主机设置,多个用逗号间隔,比如
      CHANGE MASTER TO
      MASTER_HOST=’master2.mycompany.com’,
      MASTER_USER=’replication’,
      MASTER_PASSWORD=’bigs3cret’
    * MASTER_POS_WAIT() #从机运行
    * SHOW MASTER STATUS #主机运行,看日志导出信息
    * SHOW SLAVE HOSTS #主机运行,看连入的从机的情况。
    * SHOW SLAVE STATUS (slave)
    * SHOW MASTER LOGS (master)
    * SHOW BINLOG EVENTS [ IN ‘logname’ ] [ FROM pos ] [ LIMIT [offset,] rows ]
    * PURGE [MASTER] LOGS TO ‘logname’ ; PURGE [MASTER] LOGS BEFORE ‘date’