WinServer配置MySQL主从同步
为什么要配置主从同步?
如果一台数据库服务器挂了,还有一个备用
为了方便配置,我采用两台winserver2003虚拟机:
1.前期准备工作:安装好镜像文件,vmtools,mysql5.5
我这里以192.168.111.134为主服务器(以下简称134)
打开my.ini文件:
在最下面加上这些:
#----------------------- server-id=1 log-bin=master-bin log-bin-index=master-bin.index
然后重启134的mysql服务(运行services.msc然后重启)
打开mysql,输入show master status;
如果显示类似下面,说明配置成功
为从数据库配置一个用户:repl,并且进行权限配置(@从数据库ip)
然后配置192.168.111.135为从服务器(以下简称135)
打开my.ini文件:
#----------------------- server-id=2 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin
重启135的mysql服务(运行services.msc然后重启)
这三行解释:设置主服务器ip端口用户名密码以及刚才生产的文件,起始位置为0
查看状态:配置成功
配置成功后自行进行测试:主数据库创建表,查看从数据库是否同步成功,如果按照上边配置,应该是不存在问题的
数据库转移:
旧数据库使用mysqldump导出成sql文件,然后导入新的主数据库
导入:
顺便设置编码,防止出错:
set character_set_client = utf8; set character_set_results = utf8; set character_set_connection = utf8;
这种方式是临时的,彻底修改编码,要么在安装的时候设置好了
我安装的时候忘记设置了,只能在my.ini中 设置
不过这时候如果select * from table发现还是中文乱码,这是为什么呢?
因为cmd是gbk编码的,mysql设置的是utf-8,不过通过程序查询到的不会是乱码
配置账号:
原因:通常不会给别人root权限,这是危险的,所以只给与一个账号增删改查权限
主库创建一个新的账号,并允许远程登陆进行增删改查
从库创建一个一样的账号:
项目对接:
拿javaweb为例:配置到主库
jdbc.driver=com.mysql.jdbc.driver jdbc.url=jdbc:mysql://192.168.111.134:3306/o2o?useunicode=true&characterencoding=utf8 jdbc.username=work jdbc.password=xuyiqing
然后我用junit进行验证:成功!
package org.dreamtech.o2o.dao; import org.dreamtech.o2o.basetest; import org.junit.test; import org.springframework.beans.factory.annotation.autowired; public class areadaotest extends basetest { @autowired private areadao areadao; @test public void test(){ areadao.queryarea(); } }
package org.dreamtech.o2o; import org.junit.runner.runwith; import org.springframework.test.context.contextconfiguration; import org.springframework.test.context.junit4.springjunit4classrunner; @runwith(springjunit4classrunner.class) @contextconfiguration({ "classpath:spring/spring-service.xml", "classpath:spring/spring-dao.xml"}) public class basetest { }