流程:
1:在mysql下找到myini文件,在其[mysqld] 下添加主服务器端配置:
server-id=1 #服务器 id
log-bin=C:\Program Files\MySQL\MySQL Server 55\mysql-bin #二进制文件存放路径
binlog-do-db=test1 #待同步的数据库
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
2:保存myini文件,重启数据库,然后会在C:\Program Files\MySQL\MySQL Server 55 下看到mysql-binindex 文件和mysql-bin000001文件;
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 55\bin
输入用户名和密码:mysql -u用户名 -p密码 ( mysql -uroot -proot )
4:给要连接的从服务器设置权限:grant replication slave,reload,super on toslave@1921681193 identified by '123456'; ps: 给主机1921681193添加权限,用户名:slave,密码:123456;(只需输入一次就可以了)
5:输入命令 show master status; # 找到File 和 Position 的值记录下来;
其实,主服务器是不需要设置太多信息的,只需要第1条中的前三行就足够了。
下面配置从服务器:
1:在mysql下找到myini文件,在其[mysqld] 下添加从服务器端配置:
server-id=2 #服务器 id ,不能和主服务器一致
replicate-do-db=test1 #待同步的数据库
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
2:保存myini文件,重启从数据库,在mysql51以上版本中是不支持1中master设置的,如果添加了master设置,数据库就无法重启了;
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 55\bin
4:从服务器上测试:mysql -u slave -p 123456 -h 1921681192,查看能否连接主数据库成功,如果成功,则一定要退出来,之前我就是一直犯了一个错误,按照网上的步骤测试完毕之后就没有退出mysql,结果执行以下步骤时老是报错,其原因是一直设置的是主数据库;
5:修改对主数据库的连接的参数:mysql>change master to master_host='1921681193',master_user='slave2',master_password='1234562', master_log_file='mysql-bin000001',master_log_pos=107; ps:可能会报一个错误,大概的意思是说slave线程正在运行,不能设置,这样的话,执行mysql>stop slave; 停止slave线程,然后再设置连接的参数;
6:设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
7:完毕,在这个过程中我的测试结果一直是Slave_IO_Running:No;错误代码如下,
其实原因很简单,测试连接主数据库之后没有退出来,造成接下来的所有步骤都是对主数据库的 *** 作;
其实主主同步也是相同的配置,只是相互为主机和从机的设置;
主从复制理论上支持无穷大的从库个数,实际情况下,受服务器带宽和读写能力的影响
请参考MySQL官方手册的建议:
理论上,通过使用单个主服务器/多从服务器设置,可以通过添加更多的从服务器来扩充系统,直到用完网络带宽,或者你的更新负载已经增长到主服务器不能处理的点。
在获得的收益开始吃平之前,为了确定可以有多少从服务器,以及可以将你的站点的性能提高多少,需要知道查询模式,并且要通过基准测试并根据经验确定一个典型的主服务器和从服务器中的读取(每秒钟读取量,或者max_reads)吞吐量和写(max_writes)吞吐量的关系。通过一个假设的带有复制的系统,本例给出了一个非常简单的计算结果。
假设系统负载包括10%的写和90%的读取,并且我们通过基准测试确定max_reads是1200_2×max_writes。换句话说,如果没有写 *** 作,系统每秒可以进行1,200次读取 *** 作,平均写 *** 作是平均读 *** 作所用时间的两倍,并且关系是线性的。我们假定主服务器和每个从服务器具有相同的性能,并且我们有一个主服务器和N个从服务器。那么,对于每个服务器(主服务器或从服务器),我们有:
reads=1200_2×writes
reads=9×writes/(N1)(读取是分离的,但是写入所有服务器)
9×writes/(N1)2×writes=1200
writes=1200/(29/(N1))
最后的等式表明了N个从服务器的最大写 *** 作数,假设最大可能的读取速率是每分钟1,200次,读 *** 作与写 *** 作的比率是9。
如上分析可以得到下面的结论:
·如果N=0(这表明没有复制),系统每秒可以处理大约1200/11=109个写 *** 作。
·如果N=1,每秒得到184个写 *** 作。
·如果N=8,每秒得到400个写 *** 作。
·如果N=17,每秒得到480个写 *** 作。
今天发现Mysql的主从数据库没有同步
先上Master库:
mysql>show
processlist;
查看下进程是否Sleep太多。发现很正常。
show
master
status;
也正常。
mysql>
show
master
status;
+-------------------+----------+--------------+-------------------------------+
|
File
|
Position
|
Binlog_Do_DB
|
Binlog_Ignore_DB
|
+-------------------+----------+--------------+-------------------------------+
|
mysqld-bin000001
|
3260
|
|
mysql,test,information_schema
|
+-------------------+----------+--------------+-------------------------------+
1
row
in
set
(000
sec)
再到Slave上查看
mysql>
show
slave
status\G
Slave_IO_Running:
Yes
Slave_SQL_Running:
No
可见是Slave不同步
下面介绍两种解决方法:
方法一:忽略错误后,继续同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
解决:
stop
slave;
#表示跳过一步错误,后面的数字可变
set
global
sql_slave_skip_counter
=1;
start
slave;
之后再用mysql>
show
slave
status\G
查看:
Slave_IO_Running:
Yes
Slave_SQL_Running:
Yes
ok,现在主从同步状态正常了。。。
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
解决步骤如下:
1先进入主库,进行锁表,防止数据写入
使用命令:
mysql>
flush
tables
with
read
lock;
注意:该处是锁定为只读状态,语句不区分大小写
2进行数据备份
#把数据备份到mysqlbaksql文件
[root@server01
mysql]#mysqldump
-uroot
-p
-hlocalhost
>
mysqlbaksql
这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
3查看master
状态
mysql>
show
master
status;
+-------------------+----------+--------------+-------------------------------+
|
File
|
Position
|
Binlog_Do_DB
|
Binlog_Ignore_DB
|
+-------------------+----------+--------------+-------------------------------+
|
mysqld-bin000001
|
3260
|
|
mysql,test,information_schema
|
+-------------------+----------+--------------+-------------------------------+
1
row
in
set
(000
sec)
4把mysql备份文件传到从库机器,进行数据恢复
#使用scp命令
[root@server01
mysql]#
scp
mysqlbaksql
root@192168128101:/tmp/
5停止从库的状态
mysql>
stop
slave;
6然后到从库执行mysql命令,导入数据备份
mysql>
source
/tmp/mysqlbaksql
7设置从库同步,注意该处的同步点,就是主库show
master
status信息里的|
File|
Position两项
change
master
to
master_host
=
'192168128100',
master_user
=
'rsync',
master_port=3306,
master_password='',
master_log_file
=
'mysqld-bin000001',
master_log_pos=3260;
8重新开启从同步
mysql>
stop
slave;
9查看同步状态
mysql>
show
slave
status\G
查看:
Slave_IO_Running:
Yes
Slave_SQL_Running:
Yes
好了,同步完成啦。
首先备份好你本地的数据库,方法如下。
1、用APMServ526(网站上面有下载)带的phpmyadmin 进行备份恢复。
A、运行APMServ526, 点击右边的“管理MySql 数据库”。服务器填写127001:3306,
登入名称:root,密码为空进行登录。在左边是数据库列表。点击你的数据库。点导出、拉到
最下面把“另存为文件”打勾。点执行。这样你就可以备份你的数据库了。
2、运行mySQL-Front 备份恢复你的数据库。
A、新建一个登录。
信息栏中随便写一下名字。标识你的登录信息。
B、点击连接栏,分别填好:
服务器:服务器的IP
端 口:一般为3306
C、点击注册栏,分别填好:
用 户:你申请的数据库的用户名(如果是本地一般为root),
密 码:数据库的密码(本地为空)
数据库:你申请的数据库名。
填写好这些信息后点击“确定”这样就能链接到你的远程数据库了。左边这个远程数据。
服务器的一些数据库,点击你的数据库后等待链接。直至返回所有数据,你便能打开你的数据库。
中的数据表了。在这里你可以修改你的数据表结构,删除填加数据等(小心 *** 作)。
D、右键点击你的数据库进行备份(输出)数据,有几种备份的类型,一般选sql。
以上就是关于如何设置MySQL同步全部的内容,包括:如何设置MySQL同步、mysql主从同步如何同步已有的数据,(mysql数据库主从同步原理)、mysql主从数据库不同步的2种解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)