数据库(mariadb)主从搭建
1,准备两台虚拟机(本文使用centos7演示)!
一:启动虚拟机配置环境安装数据库(俩节点都要执行操作)
--------关闭防火墙----------
systemctl stop firewalld
--------关闭selinux---------
setenforce 0
-----------配置hosts文件----------
vi /etc/hosts

IP地址分别是两个虚拟机的ip地址主机名可以自己定义但不要一样
二:安装数据库(俩节点都要执行该操作)
----------------------------------------------------------------------------------
yum install -y mariadb mariadb-server
-----------------------------------------------------
安装后修改配置文件添加(server_id项的值设置为ip最后一位即可,两台节点不能重复)
vi /etc/my.cnf 添加以下内容
主 库 :
server-id = 1 ##id号 主从不同相同
read-only=0 ###0为可读可写,1为不可写可读 binlog_format = mixed ##同步模式 log-bin = mysql-bin replicate-do-db=test ###要同步那个数据库 replicate-ignore-db=test2 ####不同步那个数据库
从 库 :
server-id = 1 ##id号 主从不同相同
read-only=1 ###0为可读可写,1为不可写可读
-------------------------------------------------------------------------------------------------------------------------
启动数据库
systemctl restart mariadb
---------------------------------------------------------------------------------------
运行数据库初始化命令,(New password处需要设置数据库密码)
mysql_secure_installation


三:登录数据库并授权
master节点运行:使用(mysql -uroot -p你的密码 )登录到数据库输入以下授权语句(node为hosts文件中第二节点主机名根据自己配置更改!)
----------------------------------------------------------------------------------------
mysql -uroot -p000000
create database 数据库名称
grant all privileges on *.* to root@'%' identified by '000000';
grant replication slave on *.* to 'user'@'node' identified by '000000';
node节点运行:使用(mysql -uroot -p你的密码 )登录到数据库输入以下授权语句(master为第一节点主机名)
----------------------------------------------------------------------------------------
mysql -uroot -p000000
create database 数据库名称
change master to master_host='master',master_user='user',master_password='000000';
测试:(在node节点执行下面命令)
start slave ;
show slave status\G;
查看下面两项为yes即可!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:如果开启slave后发现授权语句有误!需要关闭slave从新授权(stop slave;)
---------------------------------------------------------------------------
如果是同步已经有数据的库,需要》》》
flush table with read lock; ###数据库上锁
然后备份数据库,恢复到从库,
主库解锁>>>
unlock tables;
主库使用 show master status ;命令记录主库数据位置,执行复制的时候加上参数即可;
CHANGE MASTER TO MASTER_HOST='master',MASTER_USER='user',MASTER_PASSWORD='pass',MASTER_LOG_FILE='mysql-bin.000002',master_port=3307,MASTER_LOG_POS=154;
如果主从复制正在进行中,主库重启后生成新的二进制日志文件不会中断复制流程本身。从库在重新连接主库并开始复制时,会依据现有的日志文件序列继续复制,即从上次复制停止的位置(称为“同步点”或“replication position”)开始查找下一个有效的二进制日志文件继续同步。
从库在启动时,或者是手动执行CHANGE MASTER TO命令重置复制时,需要知道新的二进制日志文件名和位置,才能继续复制。