MySQL主从数据库复制

MySQL主从数据库复制

查看mysql端口是开启

netstat -tanl | grep 3306

MySQL用户的授权

mysql -uroot -p

查看现有的用户授权表

select user,host,password from mysql.user;

测试连接到其他mysql服务器

mysql -uroot -p -h192.168.0.100

授权用户user1,密码456所有权限从192.168.1.181主机访问本服务器的所有数据库。

grant all on *.* to slave@192.168.1.181 identified by "123456";

登录远程MYSQL服务器

mysql -uslave -p123456 -h192.168.1.180

查看当前数据库

select database();

查看表结构

desc table1;

开启MYSQL BIN-LOG

vim /etc/my.cnf
[mysqld]
log-bin

或者

log-bin=mysql-bin

bin-log保存路径-数据库数据文件夹根目录

/var/lib/mysql

在MYSQL查看是否开启bin-log

show variables;
show variables like "%bin%";

20131228152128

创建一个最新的BIN-LOG日志

FLUSH LOGS;

查看最后一个bin日志

SHOW MASTER STATUS;

清空所有的BIN-LOG日志

RESET MASTER;

查看bin-log的内容

mysqlbinlog mysqld-bin.000001
mysqlbinlog /var/lib/mysql/mysqld-bin.000003;

查看MYSQL字符集等相关信息

\s

MYSQL的备份

mysqldump -uroot -p123 test -l -F >'/tmp/test.sql'

-l是读锁 防止备份的过程中数据写入到数据库
-F是FLUSH LOGS

MYSQL的恢复
方法1:

mysql -uroot -p123 test -v -f < /tmp/test.sql

-v查看导入的详细信息
-f当遇到错误时,可以跳过去继续往下执行
方法2:

mysql -uroot -p123 test
source test.sql

恢复binlog文件二进制日志文件

mysqlbinlog --no-defaults  mysqld-bin.000003 |mysql -uroot -p123 test

查看日志

mysqlbinlog --no-defaults /var/lib/mysql/mysqld-bin.000006 --start-position="106" --stop-position="962"|more; 

按日志恢复

mysqlbinlog --no-defaults /var/lib/mysql/mysqld-bin.000006 --start-position="704" --stop-position="876"|mysql -uroot -p123 test

主重服务器配置
0、配置主服务器

vim /etc/my.cnf
log-bin
server-id = 1

1、给从数据库添加授权用户

grant all on *.* to slave@192.168.1.181 identified by "123456";

2、清空所有的BIN-LOG日志

reset master;

3、备份本机要同步的数据库

mysqldump -uroot -p123 test -l -F >/tmp/test.sql

4、传送已经备份的数据库导从数据库服务器

scp /tmp/test.sql 192.168.1.181:/tmp/

5、进入从服务器,恢复传过来的数据库备份。

mysql -uroot -p123
show databases;
create database test;
show master status;
reset master;
exit;

恢复开始

mysql -uroot -p123 test 

6、设置从服务器

vim /etc/my.cnf
log-bin
server-id = 2
master-host = 192.168.1.180
master-user = slave
master-password = 123456
master-port = 3306

重启服务,让配置生效

service mysqld restart

查看从服务器状态

show slave status\G

20131228205431
如果出现:
Slave_IO_Running:YES
此进程负责从服务器从主服务器上读取bin-log日志并写入从服务器上的中继日志中。
Slave_SQL_Running:YES
此进程负责读取并执行中继日志中的bin-log日志
*注意:以上两个都为YES则表明成功,只要其中一个状态是NO,则表示复制进程停止。错误原因可以从“last_error”字段的值中看到。

从数据库常用命令:

1、start slave  #启动复制进程
2、stop slave #停止复制进程
3、show slave status #查看从数据库状态
4、show master logs #查看主数据库bin-log日志
5、changge master to #动态改变到主服务器的配置,出现故障用此命令调试。
6、show processlist #查看从数据库运行进程

发表评论

邮箱地址不会被公开。 必填项已用*标注