mysqladmin processlist
#查看当前所有连接
mysqladmin status
#只查看当前连接数(Threads就是连接数.)
show variables like 'server_id';
#查看两台主机id
locate auto.cnf
rm auto.cnf
#从库auto.cnf文件会产生新的UUID
配置文件
[mysqld]
log-bin=mysql-bin
#开启二进制日志
server-id=1
#设置server id
log-bin=mysql-bin
#开启二进制日志
binlog-format=MIXED
#binlog格式
max_binlog_size = 1024M
#bin log 保存文件大小
#log-slave-updates=1 #从库启用binlog需要开启
expire-logs-days = 7
#保留log文件几天
sync-master-info=1
#启用确保无信息丢失
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#忽略同步的库
master 命令
CREATE USER 'repl'@'10.4.230.207' IDENTIFIED BY 'slavepass';
#创建用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.4.230.207';
#分配权限
flush privileges;
#刷新权限
锁库和释放
flush tables with read lock;
#该处是锁定为只读状态,语句不区分大小写
unlock tables
#释放库
查看master状态
show master status;
#获取当前log文件和pos数值
备份指定库 nohup bash backup.sh
#!/bin/bash
/usr/bin/mysqldump -uroot -p'xXXX --databases xxdb,yydb --master-data=1 --events --triggers --routines > /home/backup/tmp/20180817-dbbackup
echo 'ok' > /home/backup/tmp/done.txt
echo 'done'
基于pos的从库
mysqldump --all-databases --single-transaction --master-data=1 --triggers --routines --events --host=127.0.0.1 --port=3301 --user=root --password=123 > dump3301.sql
#--single-transaction这个一般都会加上,锁的时间比较短
head -22 /home/backup/tmp/20180817-dbbackup
# --master-data=1 输出binlog 位置
配置文件
[mysqld]
server-id=2 #设置server-id,必须唯一
导入数据
mysql < backup.sql
# 可以直接将master数据目录打包
重启mysql
CHANGE MASTER TO
MASTER_HOST='10.4.230.208',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS=73;
启动slave同步进程
start slave;
# 启动slave ;
#reset slave 重新配置; 删除 mysql-relay-bin.xx
查看slave状态
show slave status\G
正常返回: Slave_IO_Running: Yes Slave_SQL_Running: Yes
# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = live
/etc/my.cnf
read_only=1
# slave主机上操作
GRANT SElECT ON *.* TO 'username'@'%' IDENTIFIED BY "password";
# master主机上建立普通用户; 程序连从库使用限制为只读
查看从库的同步状态
show processlist\G
当机后选举一台从库来当主库
stop slave ;
# 停止同步
reset master;
# 重置master
Slave_IO_Running: no 检查账号密码和 iptables
Slave_SQL_Running: no mysqldump备份只导出部分库,我采用手动建库导入master 表结构
slave数据不一致处理过程为
1. 先停止slave
mysql>stop slave;
2. 跳过slave上的1个错误
mysql>set global sql_slave_skip_counter=1;
3.在slave上手工插入一条数据
mysql>insert into ...
4.启动slave
mysql>start slave;