配置主从复制

在配置Mysql数据库主从复制集群的时候

1.主从服务器操作系统版本和位数一致。
2.Mysql版本一致。
为了保证稳定性,最好服务器操作系统和Mysql数据库环境一致。

MySQL服务器配置复制很简单 由于场景不同 基本步骤还是有差异的 最基本的场景是新安装的主库和备库
总的来说分为以下几步:
1.每台服务器上创建复制账号
2.配置主从库
3.通知备库连接到主库并从主库复制数据

创建复制账号

MySQL会赋予一些特殊权限给复制线程。在备库运行的IO线程会建立一个到主库的TCP/IP连接 意味着必须在主库建一个用户 :

create user 'mastj'@'192.168.1.%' identified by 'mysql';
grant replication slave,REPLICATION CLIENT on *.* to 'mastj'@'192.168.1.%' identified by 'mysql';

REPLICATION CLIENT:用来监控和管理复制的账号
在主库建立账号 从主库将数据克隆岛备库 备库也设置好了(主库的设置)

配置主备库:

1.配置master的my.cnf

[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#主从复制配置
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#需要备份的数据库
binlog-do-db=orders
#不需要备份的数据库
binlog-ignore-db=mysql
#启动二进制文件
log-bin=mysql-bin
#服务器ID
server-id=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

没有配置binlog-do-db和binlog-ignore-db则表示全备数据库

sync_binlog=1 如果开启该选项 MySQL每次在提交事务前会将二进制日志同步到磁盘上 保证在服务器崩溃时不会丢失事件 如果禁止该选项 服务器会少做一些工作 但二进制日志文件可能在服务器崩溃时损失或丢失

备库配置:

server_id=2
relay_log=/mysql/log/3306/relay_log
log_slave_updates=1
read_only=1

relay_log:指定中继日志的位置和命名
log_slave_updates:允许备库将其重放的事件也记录到自身的二进制日志中
read_only:可以阻止大部分用户更改非临时表 除了复制SQL线程和其他拥有超级权限的用户外

即使开启了以上选项 备库仍然有可能在崩溃后被中断 因为master.info和中继日志文件都不是崩溃安全的 最好设置以下选项:

sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1

若orders数据库中已经有数据,还需要:
锁定数据库

   mysql> flush tables with read lock;

将数据导入到从数据库,方法有多种,我是用Navicat复制的,复制完成后:
查看master状态并解锁:

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |     2005 | orders       | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> unlock tables;

启动复制:

  1. 执行备库 :
mysql> change master to master_host='192.168.1.238',
                master_user='mastj',
                master_password='mysql',
                master_port=3306,
                master_log_file='itpuxdb-binlog.000002',#注意配置好名称会出错
                master_log_pos=154,
                master_connect_retry=10;

参数详解:

扫描二维码关注公众号,回复: 2652614 查看本文章
      master_host:主服务器的IP。      
      master_password:用户密码       
      master_port:主服务器mysql端口,如果未曾修改,默认即可。
      master_log_file:日志文件名称,填写查看master状态时显示的File
      master_log_pos:日志位置,填写查看master状态时显示的Position
      master_connect_retry:重连次数


2.启动进程

sql
mysql> start slave;
mysql> show slave status\G

—————检查主从复制状态——————
或者在主库上可以看到由备库IO线程向主库发起的连接
SHOW PROCESSLIST;
备库的两个线程
SHOW PROCESSLIST;

若Slave_IO_Running和Slave_SQL_Running均为Yes,则表示连接正常。
此时就可以测试主从复制了。

猜你喜欢

转载自blog.csdn.net/ichglauben/article/details/81541520
今日推荐