关于mysql:mysql主从

37次阅读

共计 2455 个字符,预计需要花费 7 分钟才能阅读完成。

MySQL 是开源的关系型数据库系统。复制 (Replication) 是从一台 MySQL 数据库服务器(主服务器 master)复制数据到另一个服务器(从服务器 slave)的一个过程。

配置主服务器(Master)

1、编辑数据库配置文件 my.cnf, 个别在 /etc/ 目录下。

# 编辑 my.cnf
vi /etc/my.cnf

# 新增以下内容
server-id=211 # 惟一 id
log-bin=mysql-bin #启用二进制日志
binlog-do-db=aaa-te #要同步的 mstest 数据库, 要同步多个数据库,就多加几个 replicate-db-db= 数据库名
binlog-ignore-db=information_schema #要疏忽的数据库
replicate-ignore-db=mysql #要疏忽的数据库
replicate-ignore-db=performance_schema
replicate-ignore-db=sys

配置从服务器(Slave)

# 编辑 my.cnf
vi /etc/my.cnf

# 新增以下内容
server-id=211 #id 惟一,不能与主服务器雷同
log-bin=mysql-bin #启用二进制日志

而后重启 Mysql (主从都重启)

service mysqld restart

设置

登录 mysql(主机)

mysql -uroot -p

赋予从库权限帐号,容许用户在主库上读取日志,赋予 192.168.1.2 也就是 Slave 机器有 File 权限,只赋予 Slave 机器有 File 权限还不行,还要给它 REPLICATION SLAVE 的权限才能够。

在 Master 数据库命令行中输出:

GRANT FILE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';

GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';
FLUSH PRIVILEGES;

注:这里应用的仍是 root 用户作为同步的时候应用到的用户,能够本人设定。

查看主机状态

show master status;

mysql> show master status;
+------------------+----------+--------------+--------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB   | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------+-------------------+
| mysql-bin.000001 |      154 | aaa-te       | information_schema |                   |
+------------------+----------+--------------+--------------------+-------------------+

登陆从 Mysql

在 Slave 机上验证对主机连贯

change master to master_host='192.168.1.1',master_user='root',master_password='passwd',master_log_file='mysql-bin.000001',master_log_pos=154;

启动 Slave

start slave;

查看从机状态

show slave status\G

注:Slave_IO 及 Slave_SQL 过程必须失常运行,即 YES 状态,否则都是谬误的状态(如:其中一个 NO 均属谬误)。


扩大

MySQL 主从复制几个重要的启动选项

  • log-slave-updates log-slave-updates 这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不关上的,然而,如果这个从服务器 B 是服务器 A 的从服务器,同时还作为服务器 C 的主服务器,那么就须要开发这个选项,这样它的从服务器 C 能力取得它的二进制日志进行同步操作
  • master-connect-retry master-connect-retry 这个参数是用来设置在和主服务器连贯失落的时候,重试的工夫距离,默认是 60 秒
  • read-only read-only 是用来限度普通用户对从数据库的更新操作,以确保从数据库的安全性,不过如果是超级用户仍然能够对从数据库进行更新操作
  • slave-skip-errors 在复制过程中,因为各种的起因,从服务器可能会遇到执行 BINLOG 中的 SQL 出错的状况,在默认状况下,服务器会进行复制过程,不再进行同步,等到用户自行来解决。Slave-skip-errors 的作用就是用来定义复制过程中从服务器能够主动跳过的谬误号,当复制过程中遇到定义的谬误号,就能够主动跳过,间接执行前面的 SQL 语句。–slave-skip-errors=[err1,err2,…….|ALL] 但必须留神的是,启动这个参数,如果处理不当,很可能造成主从数据库的数据不同步,在利用中须要依据理论状况,如果对数据完整性要求不是很严格,那么这个选项的确能够加重保护的老本

要革除 Slave,那么主机 mariaDB 中执行 reset slave all;

咱们晓得 mysql 主从同步能够选择性同步某几个数据库,并且要想实现这个目标能够借助如下几个参数:

  • binlog-do-db= 须要复制的数据库名,如果复制多个数据库,反复设置这个选项即可。
  • binlog-ignore-db= 不须要复制的数据库苦命,如果复制多个数据库,反复设置这个选项即可。
  • replicate-do-db= 须要复制的数据库名,如果复制多个数据库,反复设置这个选项即可。
  • replicate-ignore-db= 不须要复制的数据库名,如果要疏忽多个数据库,反复设置这个选项即可。

正文完
 0