0安装数据库
sudo apt-get install mysql -server
设置root密码
1登入mysql数据库 创建用户
etc/init.d/mysql start
mysql -uroot -p密码;
insert into mysql.user(Host,User,Password) values("%","dba",password("123456"));
grant all privileges on *.* to ‘dba‘@‘%‘ identified by ‘123456‘;
SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;
flush privileges;
配置主服务器my.conf文件
找到[mysqld]设置
server-id = 1 id设置不能相同。
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
binlog_do_db =hnswls 需要同步的数据库名称
log-slave-updates ‘‘这个参数一定要加上,否则不会给更新的记录添加到到二进制文件里
slave-skip-errors ‘’跳过错误,继续执行复制操作
#binlog_ignore_db = include_database_name不需要同步的数据库名称
修改从服务器my.conf文件
server-id =2
log_bin=/var/log/mysql/mysql-bin.log
replicate-do-db=hnswls
log-slave-updates
master-host=192.168.101.171 指定主服务器的ip
master-user=dba 主服务器已授权用户
master-password=123456密码
master-port=3306端口
master-connect-retry=30如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-ignore-db=不需要同步的数据库名称
从服务器指定新的位置重新同步
有的时候主从同步有问题了以后,需要从log位置的下一个位置进行同步,相当于跳过那个错误,这时候也可以使用CHANGE MASTER命令来处理,只要找到对应的LOG位置就可以,比如:
CHANGE MASTER TO
MASTER_HOST=‘ip地址‘,MASTER_USER=‘用户名‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysql-bin.000006‘,
MASTER_LOG_POS=106;
重启从服务器数据库
启动slave_IO_Running Slave_SQL_Running 进程
这里介绍一些管理MYSQL主从同步的命令:
1. 停止MYSQL同步
STOP SLAVE IO_THREAD; #停止IO进程
STOP SLAVE SQL_THREAD; #停止SQL进程
STOP SLAVE; #停止IO和SQL进程
2. 启动MYSQL同步
START SLAVE IO_THREAD; #启动IO进程
START SLAVE SQL_THREAD; #启动SQL进程
START SLAVE; #启动IO和SQL进程
3. 重置MYSQL同步
RESET SLAVE;
查看MYSQL同步状态
SHOW SLAVE STATUS;
看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则配置成功
测试主从服务器是否能同步
在主服务器上面新建一个表,必须在hnswls数据下
mysql> use repl
Database changed
mysql> create table test(id int,name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values(1,‘zaq‘);
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values(1,‘xsw‘);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+------+------+
| id | name |
+-------+------+
| 1 | zaq |
| 1 | xsw |
+-------+------+
2 rows in set (0.00 sec)
在从服务器查看是否同步过来
mysql> use hnswls;
Database changed
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| 1 | zaq |
| 1 | xsw |
+------+------+
2 rows in set (0.00 sec)