存档

‘Mysql’ 分类的存档

Mysql Master&Slave 实战

2014年3月11日 没有评论

从开始着手做Mysql的Master&Slave模式到现在好长一段时间了,中间由于遇到问题也停了一段时间,今天早上总算配好了,这里就分享一下自己的经验和其中遇到的问题!
刚开始的时候我也没有直接去Mysql的官网去查看手册,而且用google搜索了2篇网上其他同学的教程。如果第一次接触mysql的主从,可以去这里,看看这位同学写的东西吧,里面包含了Mysql主从的工作原理,是一个不错的入门教程。下面我们就进入正题吧!
实验环境
服务器A(master):192.168.10.8
服务器B(Slave):192.168.10.10
服务器A、B系统环境:CentOS 6.3
Mysql版本:.5.5.31
配置Master主机
编辑A服务器上面mysql的配置文件,开启Mysql的bin-log功能和设置Master相关参数和被复制数据库的相关参数。

[root@king-centos ~]# vim /etc/my.cnf

##主从配置服务器ID号,保持主从服务器不要一致

server-id=1
## Mysql开启bin-log功能
##log-bin=/data/mysql/binlog/mysql-bin.log
log-bin=mysql-bin.log
## Multiple db can use ”,” separation
## 设置被从服务器复制的数据库名称
binlog-do-db=master

Notice: 这里需要注意的是,像博主使用的是yum第三方源的mysql版本,在配置bin-log时,自定义目录时,mysqld无法启动,但是不适用自定义目录,在mysql默认目录一切正常。具体原因博主亦是不是十分清楚,把它归在于mysql编译时的配置问题上了。我用一个二进制版本的5.7的就可以自定义bin-log的路径。

然后下面就是创建用于从服务器访问的用户:

mysql> GRANT REPLICATION SLAVE ON *.* TO ’slave10′@”192.168.10.%” IDENTIFIED BY ’123456′;
mysql> FLUSH PRIVILEGES;

下面就是记录当前master服务器的状态:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS\G;

*************************** 1. row ***************************
File: mysql-bin.000007
Position: 107
Binlog_Do_DB: master
Binlog_Ignore_DB:
1 row in set (0.00 sec)
mysql> UNLOCK TABLES;

配置Slave主机

编辑从服务器配置文件my.cnf,命令和上面相同。

server-id = 3
log-bin = mysql-bin-log
## 从服务器从主服务器复制数据库名称,多个数据库可以用”,”分割
replicate-do-db = master

Notice:这里需要注意的是如果你把主从服务的server-id配成一样的,会爆下面这个错误:
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;

即IO相关进程无法启动。

此时需要同步Mysql进行主从复制的数据,我的方法是使用mysqldump把主服务器的数据库导出然后使用mysql进行同步。

同步完数据库以足够权限的用户登录mysql,不熟悉的话就使用root就好!

mysql> CHANGE MASTER TO MASTER_HOST=’192.168.10.8′,
-> MASTER_USER=’slave10′,
-> MASTER_PASSWORD=’123456′,
-> MASTER_LOG_FILE=’mysql-bin.000007′,
->MASTER_LOG_POS=107;

这里需要注意的一下是,针对mysql5.1版本或者以前版本也可以通过配置my.cnf文件达到相同的目的.
例如:

server-id               = 2
log_bin                 = mysql-bin
master-host     =192.168.10.10
master-user     =slave10
master-pass     =123456
master-port     =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =master#只复制某个库
replicate-ignore-db=mysql #不复制某个库

但是如果在mysql的5.5中做这种配置就会出现如下错误:
130620 6:04:52 InnoDB: 5.5.31 started; log sequence number 1609072
130620 6:04:52 [ERROR] /usr/libexec/mysqld: unknown variable ‘master-host=192.168.10.10′
下面就是启动mysql的slave进程了:

mysql> start slave;
mysql> show slave status \G;
……
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……

找到上面的内容,那么我就可以去试试看看,目前来说,我们的主从已经配置好了!
我们可以到master服务器上面的表中添加一条记录,然后看看从服务器会不会自动复制,如果自动复制了。那么,Congratulations,我们的mysql master&slave配置好了!
最后附上mysql手册中相关资料地址:http://dev.mysql.com/doc/refman/5.1/zh/replication.html#replication-howto

Windows服务方式启动MySQL

2014年3月11日 没有评论

最近在MySQL官网上面下载了最新版本的MySQL,没有选择msi安装包进行下载,选择普通的zip的下载,而非msi安装包中,是不提供mysql的config配置向导的,只有一个my-default.ini文件,那么MySQL的启动和配置我们就需要自己手动来进行配置了。

环境:
OS : Win7旗舰版_X64位
MySQL : mysql-5.6.14-winx64

1 安装配置MySQL
将MySQL安装包解压到D:\mysql中,然后复制个my-default.ini并将其重命名为my.ini,然后对其进行简单的配置就可以达到启动Mysql的目的。
my.ini文件:

[mysqld]
basedir = D:\mysql\
datadir = D:\mysql\data
port = 3306

接下来将MySQL的bin目录加入到系统环境变量PATH中:
计算机->属性->高级->环境变量->系统变量->PATH,在PATH的最后加入”;D:\mysql\bin”。
打开MSDOS界面,输入

mysqld --verbose --help

可以查看mysqld的各项参数。

2 安装MySQL启动服务
打开MSDOS界面输入

D:\mysql\bin\mysqld --install MySQL --defaults-file=D:\mysql\my.ini

–install 参数后面跟的是服务名称
–defaults-file 参数后面制定mysql运行时使用的配置文件
看到Service successfully installed表明服务安装成功。

注意事项:
如果dos命令这样“mysqld –install MySQL –defaults-file=D:\mysql\my.ini”,服务的路径前缀会默认使用C:\Program Files (x86)\mysql\bin这些内容,这样服务就无法正常启动了!

3 管理服务命令

NET START MySQL #启动mysql
NET STOP MySQL #停止mysql
NET RESTART MySQL #重启MySQL

至此,我们的MySQL配置安装基本成功,此时在MSDOS界面输入

mysql
就可以登陆到mysql服务器了,默认使用的是root用户,密码为空。
当然您也可以通过配置my.ini来打造自己的个性的mysql服务器,这里就不做多讲了!

分类: Mysql, windows 标签: