设为首页 收藏本站
查看: 773|回复: 0

[经验分享] mysql主从配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-11 10:41:26 | 显示全部楼层 |阅读模式
查看mysql版本
mysql -V

192.168.60.166 主
192.168.60.167 从
1.首先安装mysql
apt-get install mysql-server

2.修改主服务器的配置文件/etc/mysql/my.cnf
vim /etc/mysql/my.cnf
把下面2行注释去掉
server-id = 1
log_bin                 = /var/log/mysql/mysql-bin.log
bind-address           = 192.168.60.166

service mysql stop
service mysql start
mysql -uroot -p #登录管理mysql
GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.60.167' identified by '123456';
#授权给从数据库服务器192.168.60.167

GRANT ALL ON *.* TO 'root'@'192.168.60.86' IDENTIFIED BY '123456';
flush privileges;
#允许远程连接MYSQL

show master status; #查询主数据库状态
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      106 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

记录下 FILE 及 Position 的值,在后面进行从服务器操作的时候需要用到。
xf是如下
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+

3.配置从服务器
修改从服务器的配置文件/etc/mysql/my.cnf
vim /etc/mysql/my.cnf
将 server-id = 1修改为 server-id = 10,并确保这个ID没有被别的MySQL服务所使用。
bind-address           = 192.168.1.153
service mysql stop
service mysql start
mysql -uroot -p

change master to
master_host='192.168.1.156',
master_user='rep1',
master_password='ylmf',
master_log_file='mysql-bin.000005',
master_log_pos=242;
xf如下
mysql> change master to
master_host='192.168.60.166',
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=106;

正确执行后启动Slave同步进程

mysql> START SLAVE; #主从同步检查
show slave status;
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

GRANT ALL ON *.* TO 'root'@'192.168.60.86' IDENTIFIED BY '123456';
flush privileges;
#允许远程连接MYSQL

如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:
(1)主数据库进行锁表操作,不让数据再进行写入动作
FLUSH TABLES WITH READ LOCK;

(2)查看主数据库状态
show master status;

(3)记录下 FILE 及 Position 的值。
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。
(4)取消主数据库锁定
mysql> UNLOCK TABLES;

4.验证主从复制效果
在主服务器上创建数据库first_db
create database first_db;

在主服务器上创建表first_tb
create table first_tb(id int(3),name char(10));

在主服务器上的表first_tb中插入记录
insert into first_tb values (001,'myself');

在从服务器上查看,所有记录已复制过来
由此,整个MySQL主从复制的过程就完成了.

##############################################
5.MYSQL读写分离Amoeba方式 xf
(MySQL-Proxy方式脚本配置比较复杂,不容易扩展)
jdk1.5以上
主服务器:192.168.60.166
从服务器:192.168.60.167
MySQL-Proxy调度服务器:192.168.60.168

配置参考:Amoeba搞定mysql主从读写分离.htm

Amoeba下载地址
http://ncu.dl.sourceforge.net/sourceforge/amoeba/

9. 测试读写分离效果
为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能
登陆从数据库服务器192.168.60.167 (从),通过命令行登录管理MySQL服务器
mysql -u root -pylmf
stop slave;
连接MySQL-Proxy
mysql -uroot -p123456 -P3307 -h192.168.60.168
mysql -uroot -p123456 -h192.168.60.168 -P8066
登陆成功后,在first_db数据的first_tb表中插入两条记录
use first_db;
insert into first_tb values (007,'first');
insert into first_tb values (008,'second');
quit

分别登陆到主从数据库服务器,对比记录信息,首先,检查主数据库服务器
登录到192.168.1.156主数据库服务器
use first_db;
select * from first_tb;

然后,检查从数据库服务器
登录到192.168.1.153从数据库服务器
use first_db;
select * from first_tb;
没有新记录存在


由此,我们已经实现了MySQL读写分离,目前所有的写操作都全部在Master主服务器上,
另外,所有的读操作都分摊给了其它各个Slave从服务器上,用来分担数据库压力。



调整服务脚本,重启mysqld服务
    通过修改start()函数的执行语句,可以调控mysqld服务的启动选项。例如:
--log-slave-updates=1              #//记录从库更新,以便允许链式复制
--read-only                        #//将从库设为只读,仅允许从服务器线程或具有SUPER权限的用户执行
--relay-log=mysqld-relay-bin       #//使用固定的中继日志文件
--report-host=server205            #//报告给主服务器的主机名或IP地址
--slave_compressed_protocol=1      #//复制过程启用压缩,若启用此项,主、从服务器都应该添加
--replicate-do-db=mysql            #//仅复制指定的库,其他库将被忽略,此选项可设置多条(省略时复制所有库)
--replicate-do-db=mytestdb
--replicate-ignore-db=test         #//不复制(忽略)指定的库,此选项也可以设置多条,do和ignore用其中一种就可以了
--skip-slave-start                 #//服务器启动时跳过复制,需要手动 SLAVE START
--slave-net-timeout=60             #//当从服务器网络中断时,再次重试之前等待的时间(默认为60秒)
--master-connect-retry=60          #//当主服务器连接丢失时,再次重试之前等待的时间(默认为60秒)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25863-1-1.html 上篇帖子: MySQL初步,数据类型及SQL语句 下篇帖子: mysql主从配置 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表