If you have important data on a failing drive, the program you want is `ddrescue`.

# First, copy out anything vital

If there is any data on the filesystem you can't do without for a prolonged time, then do this first.
1. Disconnect the failing drive.
2. Mount the filesystem as Read-Only and Degraded.

 mount -o degraded,ro /dev/sdX /mount/dir
3. Copy out the data you need to another location.

# Then ddrescue drive
Now to get the rest of the data, we create an image of the drive with `ddrescue`.

1. Unmount the Btrfs filesystem. Do not mount it. Do not mount it as read only.
2. Have a new drive that is formatted Ext4, or Btrfs with Copy On Write disabled.
2. Run ddrescue to the create the image from the dieing drive to the new drive


 ddrescue /dev/sdX /path/to/save.img /path/to/save.map

4. Ddrescue could take hours or even days to finish, depending on the drive size and speed. Also, it may not ever complete if the drive is failing too much. The time you allow it to rescue is up to you.
5. When ddrescue finishes processing, then remove/disconnect the failing drive and do not reconnect it again.
6. Mount the drive image to a loop device.

 losetup -Pf --show /path/to/save.img

7. Now you should be able to mount your Btrfs raid filesystem with the normal mount command, and not degraded mode. It will automatically use the loop image device in place of the missing drive.
8. After you have mounted the Btrfs drive, immediately run a scrub on it to repair any data that ddrescue may have been unable to recover.

From there you have 2 options. You can keep running the Btrfs filesystem with the loop device, or you can replace the loop device with another drive.