miketwais

work up

mysql主从服务器配置

性能优化是老生常谈的话题,分布式存储,读写分离,等等都是优化的手段,读写分离里面就涉及到主从服务器的设置,设置完主从服务器之后,讲读操作和写操作分开,分别对应到从服务器和主服务器上。不多说了,一步步来设置主从服务器:

1.准备两台服务器,这里用虚拟机克隆两台centos系统的服务器,上面安装了mysql,mysql的安装方法自己百度,yum安装即可。启动mysql服务:service mysqld start

2.先配置主服务器:进入到mysql的my.cnf文件中进行相关的配置,一般在/etc/中

   a)  vi /etc/my.cnf 进入文件在【mysqld】下面加上:(红色部分为加上的)

   

   加完后,ESC -->wq 回车保存退出。

    server-id=1中的1可以任定义,只要是唯一的就行。

    log-bin=mysql-bin表示存储二进制日志

    binlog-do-db=test是表示只备份test。

    binlog_ignore_db=mysql表示忽略备份mysql。

    不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。

   重启mysql服务:service mysqld restart

  b)  登录到mysql :mysql -uroot -p123123 进入mysql界面

  接下来给从服务器授权。即主服务器添加远程连接账号。

  grant replication slave on *.* to 'backup'@'192.168.1.122' identified by '123456'

   backup为用户名,123456为密码,192,。168.1.122为从服务器的IP地址。

  c)  执行以下命令锁定数据库以防止写入数据。

   FLUSH TABLES WITH READ LOCK;

    再次连接数据库进入mysql命令行查看master状态。

    SHOW MASTER STATUS;

  请记下显示的信息,配置从服务器会用到。
  +——————+———-+————–+——————+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +——————+———-+————–+——————+
  | mysql-bin.000008 | 708 | dbispconfig | mysql |
  +——————+———-+————–+——————+
  1 row in set (0.00 sec)
  解锁数据表。

    UNLOCK TABLES;

3.配置从服务器

 vi /etc/my.cnf  在【mysqld】下面添加server-id =2保存退出,重启mysql服务

登录本机的mysql 然后执行下面命令:

change master to master_host='192.168.1.129',master_user='backup',master_password='123123',master_log_file='mysql-bin.000008',master_log_pos='708';

master_host:主服务器的IP

master_user:配置主服务器时建立的用户名

master_password:用户密码

master_log_file,master_log_pos则为主服务器上面显示的日志名和位置

接下来执行启动从服务命令: start slave 

 

 

ok.到此配置基本结束。查看一下配置的情况:

在从服务器上执行:show slave status\G;

看到slave_io_running:yes和slave_sql_running:yes  就表示从服务器配置成功了。

 

接下来我们来试着插入数据,之前建立的test数据库为空,现在我们创建一个表emp

create table emp(

id int primary key auto_increment,

name varchar(64) not null,

grade tinyint,

email varchar(64) not null,

salary float

);

然后插入数据:insert into emp(id,name,grade,email,salary) values(1,mike,mike@122.com,3000);

为了大量插入数据,蠕虫复制:insert into emp(name,grade,email,salary) select name,grade,email,salary from emp;

查看一下主服务器的数据:

接下来进入从服务器,查看一下test数据库中的数据:

OK,两边的数据一致,表明主从服务器的确设置成功。

 

ps:在配置过程中可能会遇到虚拟机之间无法相互远程访问的情况,即无法建立主从复制关系。这里问题的症结在于主服务器防火墙的设置:

解决方法:

切换到root用户
打开iptables的配置文件:vi /etc/sysconfig/iptables  红色划线部分为添加的mysql3306端口(明显只放行了ssh的22端口)
添加后保存退出。记得重启服务:service iptables restart
 
有了主从复制少不了读写分离,读写分离优良中实现的方式:
1,mysql-proxy或其他工具在硬件上通过设置实现。
2,通过程序实现,通过路由对‘读操作’和‘写操作’分别指向不同的方法,对应不同的数据库。
相比而言,第二种是比较好的方法。
posted @ 2015-06-11 00:53  MasonZhang  阅读(254)  评论(0)    收藏  举报