mysql 主从复制

两台服务器上安装相同版本的mysql,IP地址分别是:192.168.22.201,192.168.22.202。下面是做主从复制的步骤如下:

1、主从服务器分别作以下操作
 1.1、版本一致
 1.2、初始化表,并在后台启动mysql
 1.3、修改root的密码
2、修改主服务器master
# vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin  //[必须]启用二进制日志
server-id=201    //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3、修改从服务器slave
 # vi /etc/my.cnf
 [mysqld]
 #log-bin=mysql-bin  //[不是必须]启用二进制日志,可以不写
 server-id=202    //[必须]服务器唯一ID,默认是1,一般取IP最后一段
4、重启两台服务器的mysql
cd /usr/local/mysql
./support-files/mysql.server restart
5、在主服务器上建立帐户并授权slave
/usr/local/mysql/bin/mysql -uroot -pdfyx@20181206# 
CREATE USER 'user_slave'@'192.168.22.202' IDENTIFIED BY 'dfyx@20200922#';
GRANT REPLICATION SLAVE ON *.* TO 'user_slave'@'192.168.22.202' IDENTIFIED BY 'dfyx@20200922#';//一般不用root帐号, *表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.22.201,加强安全。
6、登录主服务器的mysql,查询master的状态
 mysql>show master status;
  +------------------+----------+--------------+------------------+
  | File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000004 |   7989 |       |         |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave
mysql>change master to master_host='192.168.22.201',master_user='user_slave',master_password='dfyx@20200922#',master_log_file='mysql-bin.000004',master_log_pos=7989;

mysql>start slave;  //启动从服务器复制功能
mysql>stop slave; //停止从服务器复制功能
8、检查从服务器复制功能状态
 mysql> show slave status\G

  *************************** 1. row ***************************
​       Slave_IO_State: Waiting for master to send event
​       Master_Host: 192.168.22.201 //主服务器地址
​       Master_User: user_slave  //授权帐户名,尽量避免使用root
​       Master_Port: 3306   //数据库端口,部分版本没有此行
​       Connect_Retry: 60
​       Master_Log_File: mysql-bin.000004
​       Read_Master_Log_Pos: 600   //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
​       Relay_Log_File: ddte-relay-bin.000003
​       Relay_Log_Pos: 251
​       Relay_Master_Log_File: mysql-bin.000004
​       Slave_IO_Running: Yes   //此状态必须YES
​       Slave_SQL_Running: Yes   //此状态必须YES
​          ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。以上操作过程,主从服务器配置完成。
9、主从服务器测试
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)

mysql> use hi_db;
Database changed

mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| hi_db         |
| mysql         |
| test         |
+--------------------+
4 rows in set (0.00 sec)

从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database        |
+--------------------+
| information_schema |
| hi_db         |    //I'M here,大家看到了吧
| mysql         |
| test      |

+--------------------+
4 rows in set (0.00 sec)

mysql> use hi_db
Database changed
mysql> select * from hi_tb;      //查看主服务器上新增的具体数据
+------+------+
| id  | name |
+------+------+
|  1 | bobu |
+------+------+
1 row in set (0.00 sec)
10、完成
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

11、备份、还原

# 备份
cd /usr/local/mysql
./bin/mysqldump -h127.0.0.1 -uroot -p --databases dfyx_back --lock-tables --add-locks > data/dfyx_back.sql
dfyx@20181206#
# 上传
scp dfyx_back.sql 192.168.22.202:/usr/local/mysql/data
# 还原
cd /usr/local/mysql
./bin/mysqladmin -h127.0.0.1 -uroot -p create dfyx_back
ocnXms@123
./bin/mysql -h127.0.0.1 -uroot -p dfyx_back < data/dfyx_back.sql
ocnXms@123

参考来源:https://blog.51cto.com/369369/790921

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值