主从复制总结
2019-02-13 本文已影响0人
Zhang_cfc3
1.原理:(1)主服务器上面的任何修改都会保存在二进制日志Binary log里面
(2) 从服务器上面启动一个I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。
(3) 从服务器上面同时开启一个SQL thread 定时检查Realy log,如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
具体操作
1.在主服务器上启用二进制日志并记录其是主服务器的标识(在 /etc/my.cnf中加入)
[mysqld]log-bin=/var/log/mysql/mysql-bin
server-id=1
创建用户并且授权
shell> mkdir /var/log/mysql
shell> chown mysql.mysql /var/log/mysql
重启服务(这个都会)
2.创建个专门复制数据的用户
然后试试是否能用此用户连接
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql>
3.先导出数据然后SCP到从服务器中
shell > vim ~/.mysql_user
> 密码
shell > mysqldump --defaults-file=~/.mysql_user -h127.0.0.1 --all-databases > dbdump.sql
scp dbdump.sql 'root'@'xxx.xxx.xxx.xxx':
4.配置从服务器 并且重启
// my.cnf 文件
[mysqld]
server-id=2
5.导入数据到从服务器
shell> mysql < /root/fulldb.dump
6.在从服务器上的mysql中配置连接主服务器的信息
mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
7.启动从服务器的复制线程开始
mysql> start slave;
Query OK, 0 rows affected (0.09 sec)