Nhân rộng RDS-MySQL sang máy chủ không phải amazon?


16

Tôi có một cơ sở dữ liệu MySQL (5.1) khá lớn đang chạy trong Amazon dưới dạng RDS. Tôi đang làm việc để di chuyển nó ra khỏi Amazon. Để làm điều đó một cách trơn tru, tôi muốn thiết lập phần cứng mới dưới dạng bản sao chỉ đọc của phiên bản RDS.

Tôi biết RDS hỗ trợ nhân rộng trong RDS. Có cách nào để cấu hình nó để sao chép vào một máy chủ không có trong RDS không?


Là tất cả dữ liệu của bạn InnoDB ???
RolandoMySQLDBA

Chúng ta hãy nói "vâng, tất cả là trong innodb" - đủ gần với sự thật cho diễn đàn này. ;)
Leopd

Câu trả lời:




3

Nếu bạn có kịch bản sau đây

  • tất cả dữ liệu của bạn là innodb
  • bạn đã đăng nhập nhị phân trên RDS

bạn có thể tạo một người dùng trong RDS như thế này

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'%' IDENTIFIED BY 'repl_password'; 

Nếu Amazon không cho phép '%' cho tên máy chủ, bạn sẽ cần một địa chỉ IP công cộng cụ thể

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';

Tiếp theo, mysqldump dữ liệu ra khỏi RDS như một giao dịch đơn lẻ

mysqldump -u... -p... --single-transaction --master-data=1 --all-databases --routines --triggers > /root/MySQLData.sql

Chạy lệnh CHANGE MASTER TO bằng cách sử dụng leopd@'xxx.xx.xx.xxxx 'với tư cách là người dùng (xxx.xx.xx.xxxx là địa chỉ IP của RDS)

CHANGE MASTER TO
master_host = 'xxx.xx.xx.xxxx',
master_port = 3306,
master_user = 'leopd',
master_passwowrd = 'repl_pass'
master_log_file='slsnbj',
master_log_pos=1;

Tải dữ liệu vào một máy chủ mới. Đừng lo lắng về master_log_file = 'slsnbj' và master_log_pose = 1. Dòng 22 của bãi chứa sẽ có tệp nhật ký và vị trí chính xác.

Chạy BẮT ĐẦU; trên máy chủ mới

Nó sẽ bắt đầu làm việc. Bạn có thể phải lo lắng về việc xem xét tường lửa.

Hãy thử một lần !!!

CẬP NHẬT 2012 / 03-23 ​​17:11 EDT

Bạn chỉ còn một cơ hội. Xem nếu bạn có thể thiết lập đặc quyền cuối cùng với điều này:

UPDATE mysql.user SET Repl_slave_priv = 'Y' WHERE user='root' AND host='%';
FLUSH PRIVILEGES;

Có lẽ điều này đang bị chặn đối với người dùng có% trong cột máy chủ của mysql.user.

Bạn có thể cần tạo một người dùng khác có IP công khai cứng như tôi đã đề xuất trước đó

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';

Các nô lệ sao chép có thể có trong RDS cũng phải là RDS.


Khi đăng nhập với quyền root, GRANT REPLICATION SLAVEkết quả làERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
Leopd 23/03 '

Hãy chạy đi SHOW GRANTS. Bạn có tất cả các đặc quyền trên . ?
RolandoMySQLDBA

Điều này đang chạy như người dùng root RDS, có tất cả các đặc quyền có thể : GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD <snip> WITH GRANT OPTION. Có vẻ như Amazon không cho phép điều này.
Leopd

Đã cập nhật câu trả lời của tôi dựa trên nhận xét cuối cùng của bạn ...
RolandoMySQLDBA

1
@Radek người đăng ban đầu (OP) đã trả lời lại vào ngày 23 tháng 3: dba.stackexchange.com/a/15492/877
RolandoMyQueryDBA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.