mysql 主主同步 修改字符编码_Mysql主从复制设置编码

my.cnf检查是否正确:mysqld --help --verbose

方案一:

# 设置字符集

[client]

default_character_set=utf8

[mysqld]

character_set_server=utf8

collation_server = utf8_general_ci

# 用户授权[mysql主服务器(master)上创建(IP:192.168.1.1)]

mysql>grant all on *.* to 'user1'@'192.168.1.2' IDENTIFIED BY '123'; #允许user1能从192.168.1.2的服务器登陆到192.168.1.1的服务器中

1.mysql>grant all slave on *.* to user1@192.168.1.2 idenitify by '123'

||

2.mysql>grant replication slave on *.* to user1@192.168.1.2 idenitify by '123'

# 查看用户授权表

select user,host,password from mysql.user

# Mysql bin-log日志

开启Mysql bin-log日志

vi /etc/my.cnf

[mysqld]

port=3306

socket=/var/lib/myqsl/mysql.sock

log-slow-queries=mysql-slow.log # 慢查询日志

log-error=mysql.err # mysql错误日志

log=mysql.log

log-bin=mysql-bin # bin-log日志

# 命令查看bin-log是否开启

mysql>show variables like "%bin%";

在显示的选项中有

log_bin ON 说明已经开启了bin-log日志

一但开启后,就会在mysql数据根目录放置

mysql-bin开头的文件

# 与bin-log日志有关的日志刷新

mysql>flush logs;

此时就会多一个最新的bin-log日志

mysql>show master status;

查看最后一个bin日志

mysql>reset master;

清空所有的bin-log日志

--查看binlog日志里面的内容

mysql>mysqlbinlog --no-defaults mysql-00001.bin

用mysqlbinlog mysql-00001.bin时报错,说是字符集有问题

就用mysqlbinlog --no-defaults mysql-00001.bin来查看

用bin来恢复数据

mysqlbinlog --no-defaults mysql-00001.bin|./mysql -uroot -p123 test

# Mysql备份和bin-log日志

1.备份数据

mysqldump -uroot -p123 test -l -F '/web/test.sql'

-l:读锁(所有人将不可以写入操作)

-F:即flush logs,可能重新生成新的日志文件,然后包括log-bin日志

查看binlog日志用mysql>show master status;

# Mysql恢复与bin-log日志

mysql -uroot -p123 test -v -f

-v:查看导入的详细信息

-f:当中间遇到错误时,可以skip过去,继续执行下面的语句

./mysqlbinlog --no-defaults binlog-file文件|mysql -uroot -p123

恢复binlog-file二进制日志文件

还有别的参数写法

./mysqlbinlog --no-defaults --stop-position="655" binlog-file文件|mysql -uroot -p123

mysqlbinlog后跟主要参数

--stop-position="1000"

--start-position="500"

--stop-date='2013-12-16 21:12:12'

--start-date='2013-12-18 21:13:12'

### Mysql主从复制

# 主服务器配置

1.登陆mysql数据库

mysql -uroot -p123 test

2.给从服务器设置授权用户

mysql>grant all slave on *.* to user1@192.168.10.2 identified by '123' 或

mysql>grant replication slave on *.* to user1@192.168.10.2 identified by '123' 两种写法都是可以的

3.修改主数据库服务器的配置文件my.cnf,开启bin-log日志,并设置server-id的值

server-id=1

4.在主服务器上设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照:(选做)

mysql>flush tables with read lock;

5.查看主服务器上当前的二进制日志名和偏移量值

mysql>show master status;

File | Position

mysql-bin... 102

6.目前主数据库服务器已经停目了更新操作,生成主数据库的备份,备份的方式有两种:

1).cp全部的数据

2).mysqldump备份数据方法

注:如果主数据库的服务可以停止,那么直势头cp数据文件应该是最快的生成快照的方法

7.主数据库备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器上去执行

mysql>unlock tables;

8.把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压后放到相当的目录即可.

scp test.sql root@192.168.10.2:/home/

注:此步骤如果用:

mysqldump -uroot -p123 test -l -F '/web/test.sql' 锁定并生成新的binlog日志文件的话,下面的 4和7步骤可以省去

# 从服务器上

1. reset master

2.恢复一下数据

mysql -uroot -p123 test

3.配置 [此步骤需要主服务器上要有授权用户]

vi /etc/my.cnf

log-bin=mysql-bin

server-id=2 注:以下的选项上mysql5.5以后就已经移除了这些选项,要在mysql命令行中用

change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';

start slave;

---------------

master-host=192.168.10.1 # 请求同步主Mysql服务器

master-user=slaveuser # 用户名

master-password=123456 # 密码

master-port=3306 # 端口

#master-connect-retry=60 # 间隙60秒

#replicate-do-db=test # 同步的库

#replicate-do-table=test.t1 # 同步的表

4. 启动Mysql数据库服务

5. mysql>show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running:Yes 这两项为Yes 代表你已经与主服务取得同步了

# 常见错误

1.从数据库无法同步

show slave status显示为Slave_SQL_Running为NO,Seconds_Behind_Master为null

原因:

A.程序可能在slave上进行了写操作

B.也可能是slave机器重启后,事务回滚造成的

解决:方法一:

mysql>slave stop;

mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql>slave start;

方法二:

Slave库

mysql>slave stop

Master库

mysql>show master status;

得到主服务器上当前的二进制日志名和偏移量,然后到slave服务器上执行手动同步

mysql>change master to

master_host="192.168.10.1",

master_user="user",

master_password="123",

master_port=3306,

master_log_file="mysql-bin.0000003",

master_log_pos=98;

启动slave服务

mysql>startslave; 要是不行就slave start;来试试

通过show slave status查看 Slave_SQL_Running为Yes,Seconds_Behind_Master为0即为正常

#################################################################

方案二:

[主数据库服务器]/etc/my.cnf

[mysqld]

server-id=1

log-bin=/var/lib/mysql/mysql-bin.log

mysql>show master status;

msyql>flush tables with read lock; [锁定表]

msyql>exit;

mysqldump -hlocalhsot -uroot -p3306 -p test > /home/test.sql

scp test.sql root@192.168.229.133:/home/

解锁

mysql>unlock tables;

创建用户

msyql>grant replication slave on *.* to 'slaveuser'@'192.168.229.133' identified by '123456'

##### 从服务器上操作

vim /etc/my.cnf

[mysqld]

server-id=2

log-bin=/var/lib/mysql/mysql-bin.log

master-host=192.168.229.131

master-user=slaveuser

master-password=123456

master-port=3306

master-connect-retry=60 #间隙60秒

replicate-do-db=test       # 同步的库

保存退出

service msyqld restart

show slave status\G;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值