• Master 主库
  • Slave 从库

Master的MySQL导出SQL

通过mysqldump命令导出数据库SQL文件

mysqldump -uroot -p --all-databases --lock-all-tables > /root/master_5.6_db.sql

上述命令报错可指定-h 127.0.0.1 -P 3306在尝试

mysqldump -h 127.0.0.1 -P 3306 -uroot -po8oxpClXxNI3vQQjY65e --all-databases --lock-all-tables > /root/master_5.7_db.sql
  • -p 后拼接密码(若不拼接,则确认命令后在输入密码即可)

指定数据库导出SQL用法

mysqldump -h 127.0.0.1 -P 3306 -uroot -po8oxpClXxNI3vQQjY65e --databases db01 db02 --lock-all-tables > /root/master_5.7_new_db.sql
  • db01 数据库
  • db02 数据库(多个数据库,空格隔开)

    备注:在slave服务器恢复时,需要上述db库已存在,若单个db库则需要指定use dbName在进行source /root/db.sql操作

Slave的MySQL导入并执行SQL

登录mysql

mysql -uroot -pxxx

执行还原SQL命令

source /root/master_db.sql

配置Master的MySQL的my.cnf

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录, 这里的目录一定要是你解压后并且改了名的目录哟..
basedir=/tgdata/mysql-5.5.62
# 设置mysql数据库的数据的存放目录, 这里的目录一定要是你解压后并且改了名的目录哟..
datadir=/tgdata/mysql-5.5.62/data
# 允许最大连接数
max_connections=2000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M


server-id=1
log-bin=master-bin
expire_logs_days=7
binlog-format=ROW

配置Slave的MySQL的my.cnf

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录, 这里的目录一定要是你解压后并且改了名的目录哟..
basedir=/tgdata/mysql-5.5.62
# 设置mysql数据库的数据的存放目录, 这里的目录一定要是你解压后并且改了名的目录哟..
datadir=/tgdata/mysql-5.5.62/data
# 允许最大连接数
max_connections=2000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M

log_bin = slave-bin
server_id = 2
relay_log = slave-relay-bin
log_slave_updates = 1
read_only = 1
expire_logs_days = 15 #binlog过期清理时间
max_binlog_size = 500m #binlog每个日志文件大小

binlog_format=mixed

replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
replicate_ignore_db=test

#跳过主键冲突错误
#slave-skip-errors=1062

配置Master数据库

授权Slave从库对Master主库的可读复制权限

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'GrantT^Slave130';
  • repl 账号
  • GrantT^Slave130 密码

刷新Master主库权限

flush PRIVILEGES

刷新日志文件

flush logs;

获取Master主库的bin-log日志及日志点位置

show master status;

配置Slave数据库

停止从库

第一次配置是不需要,若中途发生错误start slave,则后续需要停止在重新开始。

stop slave

登录Slave从库的控制台

mysql -uroot -p

配置Master节点信息

CHANGE MASTER TO MASTER_HOST='192.168.0.121',MASTER_USER='repl',MASTER_PASSWORD='GrantT^Slave130',MASTER_LOG_FILE='mysql-bin.000020',MASTER_LOG_POS=154;
  • MASTER_USER 主库配置Slave的账号
  • MASTER_PASSWORD 主库配置Slave的密码
  • MASTER_LOG_FILE 主库日志文件
  • MASTER_LOG_POS 主库日志数据当前位置

启动Slave从库同步Master主库命令

start slave

查看主从库同步状态(从库执行)

show slave status \G;