mysql 主从复制详细步骤

第一步配置Replication

①编辑主服务器的配置文件 my.cnf

[mysqld]
log-bin=/var/log/mysql/mysql-bin    //(开启二进制文件   这个目录需要自己创建,并设置mysql权限)
server-id=1  //(指定唯一ID  一般情况下主服务器设置为1)
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

②创建日志目录并赋予权限 并重启服务

[root@mysql-master1 ~]# mkdir /var/log/mysql 
[root@mysql-master1 ~]# chown mysql.mysql /var/log/mysql
[root@mysql-master1 ~]# systemctl restart mysqld

③在主服务器里创建一个专门用于复制数据的用户,目的是最大程度地降低对其他帐户的危害

mysql> create user 'wang'@'%' identified by '123';
mysql> grant replication slave on *.* to 'wang'@'%';

④在主服务器里解析主机名(也可以直接指定IP地址在从服务器登录,但是生产环境建议指定主机名)

⑤关闭主服务器的防火墙和selinux

[root@mysql-master1 ~]# setenforce 0
[root@mysql-master1 ~]# systemctl stop firewalld

⑥在从服务器使用刚才创建的用户测试连接

[root@mysql-server1 ~]# mysql -uwang -p123 -hmysql-master1

第二步 有两种情况:主服务器有数据,主服务器没有数据。

主服务器没有数据操作步骤:

①配置从服务器的配置文件 /etc/my.cnf 并重启

[mysqld]
server-id=3

[root@mysql-server1 ~]#systemctl restart mysqld

②在从服务里连接主服务器mysql

[root@mysql-server1 ~]# mysql -uwang -p123 -hmysql-master1

③通过以下语句来刷新所有表和阻止写语句

mysql> flush tables with read lock;
mysql> show master status \G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 319
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.01 sec)

④接下来在从服务器里执行下列语句

mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',
MASTER_USER='wang',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=319; 

mysql> start slave;  //开启IO和SQL线程

⑤在从服务器的mysql查看是否开启 如果出现IO 是no 那么就是UUID重复或者权限问题,如果是SQL mo 设置的文件名不对。

mysql> show slave status\G

mysql 主从复制详细步骤_第1张图片

主服务器有数据的步骤:

①先把主服务器数据备份出来,在主服务器上操作,在线上环境需要把密码隐藏起来,更安全。

[root@mysql-master1 ~]# mysqldump  -uroot  -p123  --all-databases  --master-data=1 > dbdump.db

②用scp拷贝到从服务器

[root@mysql-master1 ~]# scp dbdump.db 10.0.107.133: /root/

③在从服务器恢复拷贝过来的备份,进入从mysql

[root@mysql-server1 ~]# vim dbdump.db 找到CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1264; //需要记住file和pos
mysql> source /root/dbdump.db;
//以上目的是为了让主从服务器数据相同(我会再单写一篇如何备份和恢复。)

④在从Mysql 终端执行连接信息

mysql> CHANGE MASTER TO
MASTER_HOST='10.0.107.102',
MASTER_USER='wang',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1264;

⑤启动从服务器的复制线程以开始复制

mysql> start slave;

⑥检查是否成功

mysql> show slave status\G

生活不易,路过各位大佬点个赞

你可能感兴趣的:(个人笔记,mysql,主从复制)