一、 在同一台服务器上安装多个MariaDB
实现一主多从(这里是伪从),即将多个从数据库同步到同一台服务器上,需要运行多个MySQL实例,如下文档。
1. 官网下载Source源文件
https://downloads.mariadb.org/
2. 解压缩文件,将文件加下的my-medium.ini的名称修改为my.ini,作为文件源。
3. 复制修改后的文件,并重命名
4. 以下以3307为例,修改my.nin配置文件,如下,将原来的端口3306修改为3307
5. 使用命令行添加MySQL实例服务:
首先,切换到3307所在目录的bin目录下,执行以下命令,显示服务安装成功。
到计算机管理下面,可以看到新添加的MySQL3307服务
6. 使用同样的方法,安装MySQL3308的服务。
7. 写个简单的批处理文件mysql.bat,并使用管理员权限执行该文件启动服务,或者手动启动服务。
net start MySQL3307 net start MySQL3308 |
8. 命令行登陆MySQL:
切换到mysql的bin目录下,执行命令登陆
测试环境:
数据库版本一致,是官方推荐的方式;slave至少要和master的版本前两个号相同,可高于master;版本不一致,可能出现的问题就是同步的不稳定(兼容性的老问题),因为会在某些函数处理、日志读取、日志的解析重演等上发生异常,导致同步报错而需手工处理。
MariaDB10.2(与mysql类似)
主数据库所在服务器IP:192.168.1.155,
主数据库名称:master_db
主数据库为从数据库开设的账号:backup,密码:123
从数据库所在服务器IP:192.168.1.22
从数据库名称:master_db
注意:在设置前,主从数据库必须一致,才能实现主从同步,也要注意标点符号位英文
1. 编辑主数据库的配置文件C:\Program Files\MariaDB 10.2\data\my.ini
在[mysqld]下方添加如下配置,也可以设置binlog-ignore-db来设置不需要同步的数据库
server-id = 155 #一般默认为1,通常以IP的最后一段作为server-id,保证全局的一致性 read-only = 0 #设置主库可读写 #binlog format有三种形式:Statement、Mixed、Row,默认设置为mixed binlog-format=mixed binlog_do_db = master_db #需要同步的数据库名称,要同步多个可以写多行,否则默认同步所有的库 log_bin = mysql-bin #二进制名称,确保此文件可读写 |
2. 设置主库用于同步数据用的账号,并赋予从库复制的权限
grant replication slave on *.* to backup@192.168.1.222 identified by ‘123’ |
*.*:第一个星号代表库,第二个星号代表数据库里的表,可指定库和表。
backup是主数据库为从数据库访问主库而开设的账号,192.168.1.222 为从数据库的IP地址,‘123‘即是该账号的密码。
将修改的内容刷新到数据库配置里
mysql>flush privileges;
3. 重启mysql服务
net stop mysql
net start mysql
4. 登陆主库,并查看主库的状态
这里的file和position,在从库的配置中需要用到
5. 编辑从数据库的配置文件C:\Program Files\MariaDB 10.2\data\my.ini
将从库的server-id设置成与主库的不同,也可以设置replication-ignore-db 设置不需要同步的数据库
在[mysqld]下方添加如下配置
server-id = 222 //通常以IP的最后一段作为server-id,保证全局的一致性 read-only = 1 #从库只读 replicate-do-db = master_db #本地需要,同步的数据库,需要与主库的名称一致 |
6. 重启从数据库服务
net stop mysql
net start mysql
7. 登录从数据库,修改主库信息
change master to master_host=’192.168.1.155’ ,master_port=’3306’, master_user=’backup’,master_password=’123’, master_log_file=’mysql-bin.000001’,master_log_pos=797, master_connect_retry=60,master_delay=100; |
master_host为主库IP;
master_user、master_password 为第2步分配的用于从库同步主库数据的用户名和密码;
master_log_file为主库中设置的二进制文件,即第4步中的file;
master_log_position为二进制文件的开始位置,即第4步中的position;
master_connect_retry(若master宕机或者slave连接断开,slave会定期尝试连接到master上,重试的间隔由该选项来控制,默认值是60秒。)
master_delay用于设置复制延迟时间
8. 查看是否配置成功
Start slave; #启动从数据库
Show slave status\G; # 查看从库状态
若slave_IO_state、slave_IO_running、slave_SQL_running状态如上图所示,则表示配置成功
1. 主从数据库配置好后,将主库进行一个完全的备份,然后导入从库,保证当前主从一致,那么以后主库的任何修改都会同步到从库上面,保证主从数据库的一致性。
2. 配置主从数据库常见错误
a、 EROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'master_user='USER'
执行change 命令时落了逗号。
b 、若出现Slave_IO_Running、Slave_SQL_Running状态为no,则从stop slave 从新执行一遍change master to master_host=’192.168.1.155’,master_port=’3306’, master_user=’backup’,master_password=’123’,master_log_file=’mysql-bin.000001’,master_log_pos=797;
然后再执行start slave就可以了。
//开启从库
start slave;
//开启从库
stop slave;
//重置从库
reset slave;