一、准备(主从都需要配置):
yum -y install mysql mysql-server #安装mysql
yum -y install ntpdate #安装时间同步
echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root #配置网络时间同步
service mysqld start #启动服务
chkconfig --add mysqld #添加为系统服务
chkconfig mysqld on #开启默认运行级别
二、主服务器配置:主配置文件默认为:/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
log-bin=master-bin #开启二进制日志文件
server-id=1 #设置服务器id,保证全局唯一
sync-binlog=1 #全局唯一的server-id
innodb-flush-logs-at-trx-commit=1
innodb-support-xa=1
service mysqld restart #重启动服务
mysql> show global variables like '%server%'; #数据库id
mysql> show master logs; #查看数据库二进制日志
mysql> show master status; #查看主服务器状态,记住二进制日志名,配置从服务器会用
mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.50' identified by '123.com';
#授权192.168.0.50主机上的copy用户对所有库有复制权限
mysql> select Host,User,Password from mysql.user; #查看用户
三、从服务器配置:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
relay-log=slave-log #启用中继日志
server-id=10 #服务器id,全局唯一
read-only=1 #将服务器设置为只读模式(对拥有root权限的用户无效)
service mysqld restart #重启动服务
mysql> change master to master_host='192.168.0.10',master_user='copy',
master_password='123.com',master_log_file='master-bin.000001',master_log_pos=590;
master_host #主服务器地址
master_user #拥有复制权限的用户
master_password #密码
master_log_file #从哪个二进制日志开始复制
master_log_pos #从二进制日志的什么位置开始复制
mysql> start slave; #开启从服务器
mysql> show slave status\G; #查看从服务器状态
四、验证主从:
主服务器:
mysql> create database db_test; #创建数据库
从服务器:
mysql> show databases; #查看服务器是否同步
五、主主复制
服务器A:
[mysqld] #添加内容
log-bin=master-bin #启用二进制日志
relay-log=slave-log #启用中继日志
server-id=1 #服务器id,全局唯一
auto-increment-offset=1 #自增列起始
auto-increment-increment=2 #自增列一次步进(例:1,3,5,7,9...)
mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.50' identified by '123.com';
mysql> change master to master_host='192.168.0.50',master_user='copy',
master_password='123.com',master_log_file='master-bin.000001',master_log_pos=106;
mysql> start slave;
mysql> show slave status\G;
服务器B:
[mysqld] #添加内容
log-bin=master-bin
relay-log=slave-log
server-id=10
auto-increment-offset=2 #自增列起始
auto-increment-increment=2 #自增列一次步进(例:2,4,6,8,10...)
mysql> grant replication slave,replication client on *.* to 'copy'@'192.168.0.10' identified by '123.com';
mysql> change master to master_host='192.168.0.10',master_user='copy',
master_password='123.com',master_log_file='master-bin.000003',master_log_pos=106;
mysql> start slave;
mysql> show slave status\G;
六、半同步复制
要想使用半同步复制,必须满足以下几个条件:
1. MySQL 5.5及以上版本
2. 变量have_dynamic_loading为YES
3. 异步复制已经存在
主:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #安装插件
mysql> show plugins; #查看插件是否安装成功
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; #启用半同步
mysql> show status like 'Rpl_semi_sync_master_status'; #查看是否在运行
从:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; #安装插件
mysql> show plugins;
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1; #启用半同步
mysql> STOP SLAVE #关闭复制线程
mysql> START SLAVE #开启复制线程
mysql> show status like 'Rpl_semi_sync_slave_status'; #查看是否在运行
mysql> show variables like '%Rpl%'; #查看和半同步相关的服务器变量
rpl_semi_sync_master_enabled #是否启用半同步
rpl_semi_sync_master_timeout #等待超时时间
rpl_semi_sync_master_wait_for_slave_count
#需要等待多少个slave应答,才能返回给客户端
mysql> show status like '%Rpl_semi%'; #半同步状态
Rpl_semi_sync_master_clients #当前半同步复制从的个数
七、和复制相关的文件
从节点:
master.info:用于保存slave连接至master时的相关信息(账号,密码,服务器地址,复制的二进制文件等)
relay-log.info:保存当前slave节点上已经复制到的二进制文件位置,和relay-log的位置
创新互联-专业网站定制、快速模板网站建设、高性价比塔河网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式塔河网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖塔河地区。费用合理售后完善,10多年实体公司更值得信赖。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:mysql主从和mysql主主和半同步复制-创新互联
文章起源:
http://cdweb.net/article/pechi.html