0.环境:
master:windows7,mysql5.5
slave:centos6.5(虚拟机),mysql5.1
1.先说下centos6.5安装mysql以及简要配置
yum install -y mysql-server mysql mysql-devel
通过这种方式安装的是mysql5.1版本
然后
cd /usr/share/doc/mysql-server-5.1.73/
cp my-large.cnf /etc/my.cnf
vi /etc/my.cnf
在[mysqld]下添加:
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
default-storage-engine=INNODB
lower_case_table_names=1 #是表名不区分大小写
在[client]下添加:
default-character-set=utf8
查找server-id,并改为2(不能和master的一样即可),如果没有的话自己添加一行
然后启动mysql
service mysqld start
修改root用户的密码,默认是空
mysqladmin -u root password 'root'
然后即可登录:
mysql -u root -p
让其他机器可以用root用户登录:
GRANT ALL ON *.* TO 'root'@'%' identified by 'root' WITH GRANT OPTION;
2.windows下master的配置
在my.ini末尾填下如下内容:
#Master Config
server-id = 1
log-bin = mysql-bin
binlog-do-db = test
binlog-ignore-db = mysql
注意在slave的配置中也会有一个server-id,这2个不要重复即可
log-bin 指定日志类型
binlog-do-db 是你需要复制的数据库名称,如果有多个就用逗号“,”分开
binlog-ignore-db 是不需要复制的数据库名称,如果有多个就用逗号“,”分开
然后重启mysql
net stop mysql
net start mysql
可以查看master的状态
show master status;
建立一个名称和密码都为slave的用户,专门用于复制
3.linux下slave的配置
有2种方式:
一种是直接修改/etc/my.cnf
另一种是用命令,可以不用重启mysql
这里用命令的方式:
change master to master_host='192.168.35.145',
master_port=3306,
master_user='slave',
master_password='slave'
然后
start slave
查看slave状态
show slave status
这是master的test数据库就会同步到slave里,可以自己验证下
后面在master里面的修改都会自动同步到slave
----------------------------我是华丽的分割线----------------------------
安装好mysql后,在类似/usr/share/doc/mysql-server-5.1.73/目录下有好几个配置文件: my-small.cnf、my-medium.cnf、my-large.cnf、my-huge.cnf和my-innodb-heavy-4G.cnf分别针对不同需求和机器配置而给的配置模板,对于一般的服务器来说用my-huge.cnf或者my-innodb-heavy-4G.cnf即可
执行service mysqld start后默认会在/var/lib/mysql下生成一些配置文件和mysql自己的库,如果删除后就不能启动了,可以执行
mysql_install_db
来初始化,但是这样后可能仍然启动不了,如果查看日志的话会发现类似下面的错误:
061110 9:44:16 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
061110 9:44:16 [ERROR] Fatal error: Can't open privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
但是我们会发现 /var/lib/mysql/mysql/host.frm这个文件其实是存在的,这是因为权限的问题,解决方式如下,用下面的语句替代上面的语句即可:
mysql_install_db --user=mysql