数据库的主从配置

一、准备

1.两台服务器上两台不同的mysql 服务 (47.94.134.151)(8.136.188.138)
2.设置允许远程连接到该mysql服务

二、配置mysql主从同步
主master:47.94.134.151
从slave:8.136.188.138

1.配置主库

(1)授权给从数据库服务器

mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'8.136.188.138' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

(2) 修改主库配置文件,开启binlog,并设置server-id, 每次修改配置文件后都要重启mysql服务才会生效

vim /etc/my.cnf

在该配置文件[mysqld]下面添加下面内容:

[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
    解释:
       log-bin :同步的日志路径及文件名。一定注意这个目录是要mysql有权限写入的
       binlog-do-db:要同步的数据库名
       还可以显示设置不同步的数据库:
       binlog-ignore-db = mysql  不同步mysql库和test库
       binlog-ignore-db = test

修改配置文件之后,需要重启服务:service mysqld restart
如果启动失败,通过cat /var/log/mysqld.log | tail -30 查看mysql启动失败的日志,从日志内容寻找解决方案。
(3) 查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

mysql> show master status;
+---------------+----------+--------------+------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+---------------+----------+--------------+------------------+ 
| binlog.000001 | 1304 | cmdb | | 
+---------------+----------+--------------+------------------+ 
1 row in set (0.00 sec)

到此主服务器已配置好

2.配置从库

(1) 配置文件,在/etc/my.cnf 添加下面配置:

mysql5.5+版本主从复制不支持这些变量

[mysqld]
server-id=2
server-id=2 master-host=8.136.188.138
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb

mysql5.5+:

mysql> CHANGE MASTER TO MASTER_HOST='47.94.134.151',
  MASTER_PORT=3306,
   MASTER_USER='rep1',
    MASTER_PASSWORD='test123456',
    MASTER_LOG_FILE='binlog.000001',
    MASTER_LOG_POS=1304; #后面两个参数的值与主库保持一致

注意:这边的server_id一定要和主库的不一致,不然的话会出现 Slave_IO_Running : NO

查看server_id:

mysql>show variables like '%server_id%';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| server_id | 2 |
| server_id_bits | 32 |
+----------------+-------+
2 rows in set (0.00 sec)

设置server_id

mysql>set global server_id=2;
Query OK, 0 rows affected (0.00 sec)

启动slave进程

mysql> slave start;
Query OK, 0 rows affected (0.04 sec)

查看slave的状态,如果下面两项值为YES,则表示配置正确:

从库正在等待主库更新数据。。。Waitin for master to send event…

三、同步主库已有数据到从库(这一步就是同步数据与结构)

1、停止主库的数据更新操作

mysql>flush tables with read lock;

2、新开终端,生成主数据库的备份(导出数据库)

[root@liu ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql

3、将备份文件传到从库

[root@liu ~]# scp cmdb.sql root@8.136.188.138:/root/

4、主库解锁

mysql>unlock tables;

从库操作
1、停止从库slave

mysql>slave stop;

2、新建数据库cmdb

mysql> create database cmdb default charset utf8;

3.导入数据

[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql

4、查看从库已有该数据库和数据

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+

此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。

有问题可及时指出共同进步:laughing: 写起来可太累了:laughing:

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!