mariadb主从复制及互为主从配置过程
来源:互联网 发布:淘宝店铺托管费用 编辑:程序博客网 时间:2024/05/24 07:35
环境准备:此次试验需准备3台已安装完成的mariadb数据库。
实验结果:2台数据库互为主从,实现数据实时同步,一台为主从备份,做备份的目的。
A.配置主从复制。
1.先安装mariadb编译安装及yum源安装都可以,此实验环境使用的是linux6.4编译安装的mariadb5.5,此处不在描述。
2.数据库安装完成后,编译配置文件my.cnf。
主服务器:server-id= 160 //server-id 必须唯一,log-bin=mysql-bin //开启二进制日志# binlog-do-db = testdb //只记录testdb库变化,多个库用‘,’分隔# binlog-ignore-db=mysql //忽略mysql库变化,多个库用‘,’分隔从服务器:server-id= 162 //server-id 必须唯一,log-bin=mysql-bin //开启二进制日志#log-slave-updates //当做级联复制,或者从库做备份时A-->B-->C,B服务需要开启log-bin和log-slave-updates,二者缺一不可# expire_logs_days =7 //当binlog日志较多时,此参数的值意思是只保留7天内的数据。主库及从库都可以配置此参数。# replication-do-db = testdb //只同步testdb库,多个库用‘,’分隔# replication-ignore-db=mysql //不同步mysql库,多个库用‘,’分隔# replication-do-table = test_tb ////只同步test_tb表,多个表用‘,’分隔# replication-ignore-table = test_tb ////不同步test_tb表,多个表用‘,’分隔# replication-wild-do-table = test_tb //同replication-do-table一样,可以加通配符# replication-wild-ignore-table = test_tb //同replication-ignore-table一样,可以加通配符
3.修改完成后重启mysql服务。
#service mysqld restart
4.在主服务器上建立帐户并授权slave
mysql>GRANT REPLICATION SLAVE ON *.* TO sqlsync@10.33.133.162 IDENTIFIED BY '123456';mysql>FLUSH PRIVILEGES;
5.此时不能有数据写入数据库。
执行以下命令锁定数据库以防止写入数据
mysql>FLUSH TABLES WITH READ LOCK;
6.登录主服务器的mysql,查询master的状态
mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 517 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
解锁数据表。
mysql>UNLOCK TABLES;
7、配置从服务器Slave:
mysql>change master to master_host='10.33.133.160',master_user='sqlsync',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=517; //注意不要断开,517数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.33.133.160 //主服务器地址 Master_User: sqlsync //授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 822 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000001 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES ......注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
至此我们mysql服务器的主从复制架构已经完成,但是我们现在的主从架构并不完善,因为我们的从服务上还可以进行数据库的写入操作,一旦用户把数据写入到从服务器的数据库内,
然后从服务器从主服务器上同步数据库的时候,会造成数据的错乱,从而会造成数据的损坏,所以我们需要把从服务器设置成只读
方法:
mysql> SHOW global variables like 'read%'; //查看read_only 状态+----------------------+--------+| Variable_name | Value |+----------------------+--------+| read_buffer_size | 131072 || read_only | OFF || read_rnd_buffer_size | 262144 |+----------------------+--------+ rows in set (0.01 sec) mysql> SET GLOBAL read_only=1; //此为全局变量,只有管理员才有权限配置。设置read_only为只读,当前环境生效,重启后失效。 vim /etc/my.cnf 添加一行read_only=1 //让此项全局有效。 注意:read-only = ON ,这项功能只对非管理员组以为的用户有效!
B.配置主<—>主同步。
1.主服务器:(此处主服务器是上面主从复制的主服务器,已配置好server-id故不需要配置此项)
relay-log = relay-mysql //开启二进制日志relay-log-index =relay-mysql.index //开启中继日志auto-increment-increment = 2 //每次跳两个数auto-increment-offset = 1 //从一开始
2.从服务器:
server-id= 161 //server-id 必须唯一,relay-log = relay-mysql //开启二进制日志relay-log-index =relay-mysql.index //开启中继日志auto-increment-increment = 2 auto-increment-offset = 2
3.配置完成后重启服务。
#service mysqld restart
4.此时两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可
#masterMariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000002 | 245 | | |+------------------+----------+--------------+------------------+1 row in set (0.01 sec)#slaveMariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000004 | 245 | | |+------------------+----------+--------------+------------------+1 row in set (0.01 sec)
5.两台服务器上分别创建账户和权限,来进行同步设置。
#mastermysql>GRANT REPLACTION SLAVE ON *.* TO sqlsync@10.33.133.161 IDENTIFIED BY '123456';#slavemysql>GRANT REPLACTION SLAVE ON *.* TO sqlsync@10.33.133.160 IDENTIFIED BY '123456';
6.各服务器上指定对另一台服务器为自己的主服务器:
#mastermysql>change master to master_host='10.33.133.161',master_user='sqlsync',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=245;#slavechange master to master_host='10.33.133.160',master_user='sqlsync',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=245;
7.启动复制进程;
mysql>start slave;
8、检查从服务器复制功能状态:
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.33.133.160 //主服务器地址 Master_User: sqlsync //授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 245 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000004 Relay_Log_Pos: 245 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES
以上主到主配置完成。
配置中遇到的错误总结:
在配置主<–>主的过程中,因在从服务器之前配置过主–>从的模式,导致start slave无法启动。查看mysql错误日志。
报错Failed to open the relay log ‘./mysqld-relay-bin.000025’ (relay_log_pos 251)。
到mysql主服务器配置文件/var/lib/mysql/master.info
修改之前配置的master_log_file和master_log_pos值为现在主服务器上的值。
- mariadb主从复制及互为主从配置过程
- Mysql互为主从复制配置
- mysql互为主从复制配置笔记
- mysql互为主从复制配置笔记
- mysql互为主从复制
- mysql互为主从复制
- mariadb互为主从,读写分离
- Mysql主从复制的配置(双机互为主从)
- Mysql主从复制的配置(双机互为主从)
- MySql互为主从配置文件及配置方法
- MySQL互为主从配置
- mysql 互为主从配置
- mysql互为主从配置
- Redis主从复制配置及工作过程
- MariaDB/Mysql之主从架构的复制原理及主从/双主配置详解(一)
- mysql 互为主从复制常见问题
- centos7 mariadb主从复制配置搭建
- centos7 mariadb主从复制配置搭建
- PAT A1003
- 层级遍历二叉树
- HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析
- 2017年伊始,你需要尝试的25个Android第三方库
- Spring与Quartz实现动态更新定时任务
- mariadb主从复制及互为主从配置过程
- PFN最新的目标检测算法
- InfoGAN介绍
- 设定网页最小最大宽度和高度(兼容IE6)
- opencv中的SVM图像分类(二)
- Python 字符串方法
- AndroidStudio2.2之NDK开发
- JDK之TreeMap源码解析
- eclipse 编码