数据库主从

情景一:为启动一段时间的服务器创建并启动从节点

 

 

1、创建完全备份 

可以使用mysqldump或xtrabackup。确保主服务器开启了二进制日志

mysqldump -A -F --single-transaction --master-data=1 >all.sql
# master-data=1为主从复制用,2会注释change master to 语句

 

2、从服务器配置

每个服务器都需要有唯一的server-id

[mysqld]
server-id=37 log-bin read-only

 

3、主服务器创建权限账户

需要一个有权限的账户来完成主数据读取和从的同步

因为做过备份,所以之后这个账号也会同步到从服务器,如果不想同步账号,可以和上一步位置互换

MariaDB [(none)]> grant replication slave on *.* to repluser@'10.0.0.%' identified by '123456';

 

4、使用备份文件完成数据复制和主从配置

使用前要先修改,可使用`help change master to`查看模板

 

 修改结果

CHANGE MASTER TO
MASTER_LOG_FILE='mariadb-bin.000002',
MASTER_LOG_POS=245
MASTER_HOST='10.0.0.27',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306;

 

 

 5、将文件传到从服务器并使用

scp all.sql 10.0.0.37:/root/

#临时关闭二进制日志 MariaDB [(none)]
> set sql_log_bin=0;

MariaDB [test]> source all.sql

MariaDB [test]> start slave;
#开启二进制日志
MariaDB [test]> set sql_log_bin=1;

 

 

情景二:主宕机,提升从为主

使用`show slave status \G`查看比较数据拷贝量,提升数据拷贝最多的为主,如果主服务器未完全崩溃,可以将二进制日志复制过来恢复

 

#查看之前位置
grep '\-\- CHANGE MASTER TO'  all.sql

#拷贝所有二进制日志
略
#组合二进制日志
mysqlbinlog /var/log/mysqlbin/mysql-bin.000002 --start-position=245 > /data/backup/inc.sql
mysqlbinlog /var/log/mysqlbin/mysql-bin.000003 >> /data/backup/inc.sql
. . .

#恢复
MariaDB [(none)]> source /data/backup/inc.sql

 

此时数据较新,设置其为主节点

MariaDB [test]> stop slave ;

MariaDB [test]> reset slave all;

 

有其它服务器则按上面的步骤,先清除slave信息,再指向新的主

CHANGE MASTER TO
  MASTER_HOST='master2.mycompany.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master2-bin.001',
  MASTER_LOG_POS=4,
  MASTER_CONNECT_RETRY=10;

 

posted @ 2020-10-17 15:06  天际之上可有蓝天  阅读(224)  评论(0)    收藏  举报