场景1
如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点
通过备份恢复数据至从服务器
· 复制起始位置为备份时,二进制日志文件及其POS:
Mater 设置
1) 修改配置文件
2) 备份出数据库,会自动刷新日志,查看bin 日志
[root@mysql-master ~]# mysqldump -A -F --single-transaction --master-data=1 > /root/all.sql MariaDB [(none)]> show binary logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mariadb-bin.000001 | 2200 | | mariadb-bin.000002 | 245 | +--------------------+-----------+ 2 rows in set (0.00 sec)
3) 备份完成之后 随便创建点东西 或者空数据库
Slave 设置
1) 导入 Master 备份的数据
[root@mysql-node1 ~]# mysql < /root/all.sql
2) 链接数据库(因为导出的数据库里面已经有了,要指定的log,在此就不需要指定)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.0.40',MASTER_USER='alave',MASTER_PASSWORD='123456'; MariaDB [(none)]> start slave; Query OK, 0 rows affected, 1 warning (0.00 sec) MariaDB [(none)]> show slave statusG
从服务器添加只读属性
1、限制从服务器为只读
在从服务器上设置readonly=ON
注意:此限制对拥有SUPER权限的用户均无效
阻止所有用户,包括主服务器复制的更新
mysql> FLUSH TABLES WITH READ LOCK;
1) 查看是否开启
MariaDB [(none)]> show variables like 'read%'; +----------------------+--------+ | Variable_name | Value | +----------------------+--------+ | read_buffer_size | 131072 | | read_only | OFF | | read_rnd_buffer_size | 262144 | +----------------------+--------+
2) 修改配置文件开启read_only
3) 查看是否开启
MariaDB [(none)]> show variables like 'read%'; +----------------------+--------+ | Variable_name | Value | +----------------------+--------+ | read_buffer_size | 131072 | | read_only | ON | | read_rnd_buffer_size | 262144 | +----------------------+--------+
级联复制
如果要启用级联复制,需要在从服务器启用以下配置
[mysqld]
log_slave_updates
实验:
Mastr 配置和之前一样不变,导出数据库.等(注: 同步之前查看log ops)
中间从服务器,导入sql,并且启动,进行同步,配置文件需要先加入以下信息
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock innodb_file_per_table server_id=2 read-only log_slave_updates log_bin
Csalve配置
1) 配置文件
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock server-id=3 read-only
2) 链接(用户名可以Master 同步过去的用户<不行再创建一个在中间的从服务器>,服务器地址填中间从服务器)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.0.41',MASTER_USER='vvve',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=517706; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> start slave; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show slave statusG