- A+
用户操作
create user 'fuxuan002'@'172.18.67.213' identified by '666666'; // 用户创建
grant all privileges on 33hao.* to 'fuxuan002'@'172.18.67.213'; //用户授权
flush privileges;//刷新权限
show master status\G
show salve status\G
mysql> change master to -> master_host='192.168.95.11', -> master_user='mysql11', ->master_password='mysql11', ->master_log_file='mysql-bin.000097', -> master_log_pos=107;
mysql恢复与bin-log日志
1.mysql备份
/usr/local/mysql/bin/mysqldump -uroot -p666666 33hao > /home/mysql/2017-10-23.sql
2.mysql恢复
mysql -uroot -p666 test -v -f < /tmp/test.sql
-v 查看导入的详情
-f 是当中间遇到错误时,可以skip过去,继续执行下边的语句
3.从bin-log日志恢复
cd /usr/local/mysql/var
/usr/local/mysql/bin/mysqlbinlog --no-defaults mysql-bin.000008 | more #查看binlog日志
mysqlbinlog --no-defaults mysql-bin.00001 | msyql -uroot -p333 test #test 可加可不加
如果出现误删除则可以用position来根据具体的位置来恢复
mysqlbinlog --no-defaults --stop-position="238" msyql-bin.0000012|mysql -uroot -p666 test #从bin-log日志恢复数据并在position 为238的位置结束
--stop-position='100'
--start-postion='60'
--stop-date='2017-06-21 21:17:32'
--start-date='2017-10-23 01:32:10'
4.配置
my.conf
log-bin=mysql-bin
server-id = 1 #主服务器的server_id
配置完成后查看
show slave status\G 查看是否成功
start slave 启动复制线程
stop slave 停止复制线程
show master logs 查看主数据库bin-log 日志
change master to 动态改变主服务的配置
show processlist 查看从数据库运行进程
注意:这里需要更多的配置 (默认的 bin-log 大小为 1G)会导致服务器 出现 event_log 过大
log_bin = /usr/local/mariadb/data/mysql-bin.log
max_binlog_size = 512M
所以应该添加上边的 配置参数
当数据库中的用户表的金额出现错误时,需要通过binlog日志来查询问题点
1.导出 binlog 到静态文件
/usr/local/mariadb/bin/mysqlbinlog --database=shipan mysql-bin.000005 > /home/jack/db.sql
2.过滤用户表数据
grep -B3 -w wh_user db.sql > table.sql
3.通过grep过滤想要的数据
grep table.sql | grep 'jack'
grep table.sql | grep 'UPDATE'
flush tables with read lock; 读锁
unlock tables;解锁
reset master #初始化 position
show master status #显示position
show grants for user1@172.18.67.212
pkill mysqld 关闭msyql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
启动mysql
php链接
mysql_connect("192.168.1.1",'user','666')
mysql_select_db('test');
$sql = "select * from test1";
$result = mysql_query($sql);
while($row = msyql_fetch_assoc($result)){
echo '<br>';
print_r($row);
echo '</br>';
}
附 当从数据库无法同步时解决方案
Show slave status 显示 Slave_SQL_Running 为No,Seconds_Behind_Master 为null 时
可能是在从数据库上进行了写的操作
方法1:
slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
slave start;
方法2:
从 slave stop
主 show master status;
从 手动同步
mysql>change master to
master_host = "192.168.1.1",
master_user= "jack",
master_password = '555',
master_port=3306,
master_log_file="mysql-bin.000009",
master_log_pos=258;
然后启动同步 slave start
最后再查看 show slave status 看到 Slave_SQL_Runnig 为Yes Second_Behind_Master 为0即为成功了
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-