MySQL主备搭建
1.主库配置
以下所有操作均在主服务器上执行
1)授权给从数据库服务器
mysql>GRANT REPLICATION SLAVE ON *.* to '用户名'@'从数据库IP地址' identified by '密码';
mysql>FLUSH PRIVILEGES;
2)修改主库配置文件
开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效
vim /etc/my.cnf
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=/var/lib/mysql/binlog
#master端的id号,不唯一即可
server-id=1
#指定同步的数据库,如果不写,默认是同步所有数据库
binlog-do-db = cmdb
#指定不同步的数据库
binlog-ignore-db=mysql
#binlog日志的保留时间
expire_logs_days=7
#指定binlog日志的格式
binlog_format=ROW
改配置文件后,重启服务:
service mysqld restart
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)修改从库配置文件
vim /etc/my.cnf
#master端的id号,不唯一即可
server-id=99
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=mysql-bin
#复制哪个库
replicate-do-db=webkit
replicate-do-db=dgp
replicate-do-db=dses_etldb
replicate-do-db=dses_metadb
replicate-do-db=dcf
replicate-do-db=etl
replicate-do-db=metadata
#不复制哪个库
replicate-ignore-db=mysql,information_schema,performance_schema
#这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止,保证数据写入的一致性
master_info_repository=table
relay_log_info_repository=table
改配置文件后,重启服务:
service mysqld restart
2)sql中执行
mysql> CHANGE MASTER TO MASTER_HOST='主库的ip',
MASTER_PORT=3306,
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog.000002',
MASTER_LOG_POS=1943;
注:MASTER_LOG_FILE和MASTER_LOG_POS的值为master节点中执行show master status查询到的信息
2)启动slave进程
mysql> start slave;
Query OK, 0 rows affected (0.04 sec)
3)查看slave状态
mysql> show slave status\G;
如果下面两项值为YES,则表示配置正确:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes