mysql异地容灾面试_mysql-5.6.28主从备份,异地容灾

本文详细介绍了如何配置MySQL的主从备份及异地容灾,包括在两台服务器上安装相同版本的MySQL,配置my.cnf参数,创建复制用户,执行数据库备份,设置主从同步,以及验证主从复制的正确性。通过这些步骤,可以实现MySQL数据库的高可用性和故障切换。
摘要由CSDN通过智能技术生成

首先在两台MySQL服务器192.168.1.89(主)和192.168.1.90(备)上安装版本一样的mysql,大家可以参照着点击打开链接去安装

安装好以后在192.168.1.89(主)上面的my.cnf文件上面加入以下参数

binlog_format = mixed

expire_logs_days = 15

//慢sql时间

slow_query_log = 1

long_query_time = 1

//慢sql输出位置

slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log

log_error = /usr/local/mysql/logs/mysql-error.log

#主服务器的id

server-id = 1

log-bin = /usr/local/mysql/logs/mysql-bin.log

//需要同步的db名称

binlog-do-db=test

//不需要同步的db名称

binlog-ignore-db=mysql

innodb_buffer_pool_size = 1000M

192.168.1.90(从)上面的my.cnf文件加入一下参数

binlog_format = mixed

expire_logs_days = 15

#慢sql时间

slow_query_log = 1

long_query_time = 1

#慢sql输出位置

slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log

log_error = /usr/local/mysql/logs/mysql-error.log

#从服务器的id

server-id = 2

log-bin = /usr/local/mysql/logs/mysql-bin.log

#需要同步的db名称

replicate-do-db=test

#不需要同步的db名称

replicate-ignore-db=mysql

innodb_buffer_pool_size = 1000M

配置MySQL主服务器(192.168.1.89)

mysql -uroot -p #进入MySQL控制台

insert into mysql.user(Host,User,Password) values('localhost','slavetest',password('123456')); #创建用于主从备份的帐号

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

报以上错误的话

原因:在我的配置文件my.cnf中有这样一条语句

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

指定了严格模式,为了安全,严格模式禁止通过insert 这种形式直接修改mysql库中的user表进行添加新用户

解决办法:

将配置文件中的STRICT_TRANS_TABLES删掉,即改为:

sql_mode=NO_ENGINE_SUBSTITUTION

#建立MySQL主从数据库同步用户slavetest密码123456

flush privileges; #刷新系统授权表

#授权用户slavetest只能从192.168.1.89这个IP访问主服务器192.168.1.90上面的数据库,并且只具有数据库备份的权限,设置密码为123456

grant replication slave on *.* to 'slavetest'@'192.168.1.89' identified by '123456' with grant option;

备份db

先锁表

FLUSH TABLES WITH READ LOCK;

然后重新起一个ssh再导出

mysqldump -u root -p -h 127.0.0.1 -P 3306 --skip-lock-tables test >/home/sh/test.sql

然后再查看,记录下bin和pos

SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 | 752 | | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

最后解锁

UNLOCK TABLES;

然后传输到另外一台服务器

scp test.sql root@192.168.1.90:/home/sh/

配置从Mysql服务器(192.168.1.90)

mysql -u root -p #进入从服务器MySQL控制台

create database test; #创建数据库

use test #进入数据库

source /home/sh/test.sql #导入备份文件到数据库

或者通过以下的方式也可以导入到db

mysql -u root -p -h 127.0.0.1 -P 3306 -B test < test.sql

停止同步

stop slave;

#执行同步语句

change master to master_host='192.168.1.89', master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=752,master_user='slaveTest',master_password='123456';

开始同步

start slave;

#查看slave同步信息,出现以下内容

SHOW slave STATUS \G

root@(none) 11:04>show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.89

Master_User: slaveTest

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000002

Read_Master_Log_Pos: 752

Relay_Log_File: relay-log.000003

Relay_Log_Pos: 372

Relay_Master_Log_File: binlog.000007

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test

Replicate_Ignore_DB: mysql,mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table: mysql.%

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 229

Relay_Log_Space: 797

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 88888

1 row in set (0.00 sec)

最后注意查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

测试MySQL主从服务器双机热备是否成功

1、进入MySQL主服务器

mysql -u root -p #进入主服务器MySQL控制台

use test #进入数据库

CREATE TABLE test2 ( id int not null ,name char(20) ); #创建test表

2、进入MySQL从服务器

mysql -u root -p #进入MySQL控制台

use test #进入数据库

show tables; #查看test表结构,会看到有一个新建的表test2,表示数据库同步成功

至此,MySQL数据库配置主从服务器实现双机热备实例教程完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值