主从复制搭建

一、准备环境
1、配置IP地址
master 192.168.100.10
slave 192.168.100.20

2、master和slave上都安装好MySQL5.7
安装过程略

二、修改配置文件
1、master
cat /etc/my.cnf

[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
default-character-set=utf8mb4

[mysqld]
server_id=10
port = 3306
user = mysql
character-set-server = utf8
default_storage_engine = innodb
log_timestamps = SYSTEM
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/mysql.pid
log_error = /usr/local/mysql/log/mysql-error.log?
skip-name-resolve
log_bin = /usr/local/mysql/data/master-bin
log_slave_updates = true

/etc/init.d/mysqld restart

Shutting down MySQL.. SUCCESS! 
Starting MySQL.sed: -e expression #1, char 21: unknown option to `s'
. SUCCESS! 

2、slave
cat /etc/my.cnf

[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
[mysqld]
server_id=11
port = 3306
user = mysql
character-set-server = utf8mb4
default_storage_engine = innodb
log_timestamps = SYSTEM
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/mysql.pid
log_error = /usr/local/mysql/log/mysql-error.log?
skip-name-resolve
slow_query_log=1  
long_query_time=0.01
log_queries_not_using_indexes
relay_log=relay-log-bin
relay_log_index=slave-relay-bin.index

/etc/init.d/mysqld restart

Shutting down MySQL.. SUCCESS! 
Starting MySQL.sed: -e expression #1, char 21: unknown option to `s'
. SUCCESS! 

三、在master上创建主从同步的用户及授权
mysql -uroot -p
mysql> grant replication slave on . to ‘rep’@’%’ identified by ‘123456’;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

四、在master上做全备
1.对主数据库锁表只读后进行备份
mysql> flush table with read lock;
mysql> show variables like ‘%timeout%’; 默认情况下,自动解锁的时长参数值设置

2.锁表后查看主库的状态
mysql> show master status;

+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      588 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

3.导出主库数据
新开一个SSH窗口
mkdir -p /server/backup
mysqldump -uroot -p --opt --all-databases |gzip > /server/backup/bak_all_database_$(date +%F).sql.gz
Enter password:
ls /server/backup/
bak_all_database_2020-02-19.sql.gz

为了确保导出数据期间,数据库没有数据插入,导库完毕后可以再检查下主库的状态信息
mysql> show master status;

+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      588 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

解锁主库
mysql> unlock tables;

4.把从主库导出的MySQL数据迁移到从库

scp -rp /server/backup/bak_all_database_2020-02-19.sql.gz /tmp/

五、从库恢复从主库上的全备
zcat /tmp/bak_all_database_2020-02-19.sql.gz |mysql -uroot -p
Enter password:
mysql -uroot -p -e ‘show databases;’ #查看与master上的库达到一致

六、从库中进行主从同步的设置
mysql -uroot -p
mysql> change master to master_host=‘192.168.100.10’,
master_user=‘rep’,
master_password=‘123456’,
master_log_file=‘master-bin.000001’,
master_log_pos=588;

mysql>
mysql> start slave; #开启同步

七、检测同步是否成功
方法一:在从库上查看slave的状态,出现IO线程和SQL线程YES则成功
mysql> show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

方法二:
master上新建TestDB库,slave马上就有则成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值