<?php
$mysqli = new mysqli('slave_host', 'root', 'passwd', 'dbname');
/*
* This is the "official" OO way to do it,
* BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
*/
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
/*
* Use this instead of $connect_error if you need to ensure
* compatibility with PHP versions prior to 5.2.9 and 5.3.0.
*/
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
echo 'Success... ' . $mysqli->host_info . "\n";
/* Create table doesn't return a resultset */
/**
*
* @var mysqli_result $result
*/
$result = $mysqli->query("show slave status");
if ($mysqli->errno) {
printf("Error number: %s\n", $mysqli->errno);
printf("Error message: %s\n", $mysqli->error);
}
if ($result !== false) {
$row = $result->fetch_assoc();
echo "master : {$row['Master_Log_File']}\n";
echo "slave relay : {$row['Relay_Master_Log_File']}\n";
echo " : " . ($row['Read_Master_Log_Pos'] - $row['Exec_Master_Log_Pos']);
}
$mysqli->close();
分类目录归档:MySQL
target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
# umount /dev/vg1/lvMysql
umount: /mnt/mysql: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
# fuser -k /mnt/mysql/
参考:http://blog.itechol.com/space-33-do-blog-id-6188.html
MYSQL远程直接导入数据库方法
mysqldump -uroot -pxxx -hmaster nimei –single-transaction –default-character-set=utf8mb4 | mysql –default-character-set=utf8mb4 -uroot -pxxx -h127.0.0.1 nimei
注意 –default-character-set 别丢了,否则emoji丢失!
13.4.2.1 CHANGE MASTER TO Syntax
HANGE MASTER TO option [, option] ...
option:
MASTER_BIND = 'interface_name'
| MASTER_HOST = 'host_name'
| MASTER_USER = 'user_name'
| MASTER_PASSWORD = 'password'
| MASTER_PORT = port_num
| MASTER_CONNECT_RETRY = interval
| MASTER_RETRY_COUNT = count
| MASTER_DELAY = interval
| MASTER_HEARTBEAT_PERIOD = interval
| MASTER_LOG_FILE = 'master_log_name'
| MASTER_LOG_POS = master_log_pos
| MASTER_AUTO_POSITION = {0|1}
| RELAY_LOG_FILE = 'relay_log_name'
| RELAY_LOG_POS = relay_log_pos
| MASTER_SSL = {0|1}
| MASTER_SSL_CA = 'ca_file_name'
| MASTER_SSL_CAPATH = 'ca_directory_name'
| MASTER_SSL_CERT = 'cert_file_name'
| MASTER_SSL_CRL = 'crl_file_name'
| MASTER_SSL_CRLPATH = 'crl_directory_name'
| MASTER_SSL_KEY = 'key_file_name'
| MASTER_SSL_CIPHER = 'cipher_list'
| MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
| IGNORE_SERVER_IDS = (server_id_list)
server_id_list:
[server_id [, server_id] ... ]
STOP SLAVE; -- if replication was running CHANGE MASTER TO MASTER_PASSWORD='new3cret'; START SLAVE; -- if you want to restart replication
实例:
stop slave; CHANGE MASTER TO MASTER_HOST = 'master', MASTER_USER = 'repl', MASTER_PASSWORD = 'xxxxxxxx', MASTER_PORT = 3306, MASTER_LOG_FILE ='mysql-bin.005029', MASTER_LOG_POS =0; set global replicate_do_db = 'doufu'; set global replicate_ignore_db ='mysql,information_schema,performance_schema'; start slave; show slave status; show variables like '%Replicate%';
pt-online-schema-change 在线热修改表,不锁表
连接到master上执行
pt-online-schema-change --user=root --password=xxxxx--host=master D=doufu,t=user_comment --execute --alter "ADD COLUMN content_image text NULL COMMENT '' AFTER like_uids" --nocheck-replication-filters
选项说明:
–user=root 用户名
–password=xxxxx 密码
–host=master 主机ip或域名
D=doufu,t=user_comment 数据库名和表明
–execute 不加此参数不会真的执行
–alter “ADD COLUMN content_image text NULL COMMENT ” AFTER like_uids” 需要执行的修改操作
–nocheck-replication-filters 如果有主从结构必须加此参数才能运行, 必须在主库上执行
Discuz! Database (0) notconnect
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
Waiting for query cache lock
原文地址
http://250688049.blog.51cto.com/643101/1560425
Mysql InnoDB 引发 Waiting for query cache lock
标签:Mysql InnoDB Waiting
线上数据库中,如果是InnoDB的话,配备足够的innodb buffer pool后,就把query cache关闭掉(query_cache_size 和 query_cache_type 同时设置为 0),大量的更新+查询时,更容易引发 Waiting for query cache lock。
。。。
— show variables like ‘query_cache%’;
— set global query_cache_type=0;
— set global query_cache_size=0;
— show variables like ‘%slow%’;
pt-table-sync 修复同步数据一致问题
修复方向master向从库同步,由于是一主一从所以这个方向没问题,以master的数据为准:
pt-table-sync --print --execute h=master,D=database_name,t=table_name,u=root,p=password h=web3 --no-check-slave --lock=1 --charset=utf8mb4
参数格式
pt-table-sync DNS1 DNS2 DNS3
DNS1是源数据库
后面的都是目标数据库
DNS格式说明:D数据 u用户名 p密码 t表名
上面的例子只有一个目标数据修复单个表
也可以修复整个数据库:
pt-table-sync --print --execute h=master,D=database_name,u=root,p=password h=web3 --no-check-slave --lock=1 --database=database_name --charset=utf8mb4
–no-check-slave 主向从同步需要这个参数,否则只能从向主同步,因为如果有多个从库可能会导致新的不一致
–print 打印出来(实际运行时请去掉这参数 否则遇到特殊字符时会导致修复中断)
–execute 真的运行,去掉这个参数可以只预览
–charset=utf8mb4 设置字符串否则可能会乱码
–lock=1
1:循环锁,默认1000条一个周期,一个周期提交一次事物,建议使用这个锁类型不影响写入
否则数据量过大会导致锁检查过的表,默认是一次性提交